■ グラフィック液晶制御(グラフィックライブラリ: 電子工作の実験室編)
■ 汎用ポート制御(8080 8ビットパラレル) + QVGA
フレームバッファーを内蔵する液晶を マイコンが制御する場合のインターフェースとして、(インテル)8080 8ビットパラレルや16ビットパラレルがよくつかわれます。
インターフェースは汎用ポートをつかった8ビットパラレルをつかい、グラフィックライブラリは 後閑哲也さんの「LCD & タッチセンサ活用の素」(技術評論社)の中の
第6章「QVGA液晶表示器とタッチスクリーンの使い方」にあるdsPIC用のグラフィックライブラリを PIC32用に変更したグラフィックライブラリを使用したQVGAの
液晶制御を紹介します。
(その1)汎用ポート:RE0−RE7の場合
<試作品仕様>
・2.4インチQVGA液晶に PIC32MX795F512Lを使用して表示をおこなう
・液晶はaitendo YHY024006A(LCDコントローラ:ILI9325)を16ビットパラレルから8ビットパラレルに変更したものを使用すること。
(変更要領:「LCD & タッチセンサ活用の素」参照)
・インターフェースは PICの汎用ポートをつかった 8080 8ビットパラレルとする。
・汎用ポートは RE0−RE7 をつかうこと
・グラフィックライブラリは「LCD & タッチセンサ活用の素」にあるdsPIC用をPIC32用に変更してつかうこと。
<試作品回路図>(→回路図のPDFファイル)
PIC32MX795F512Lの場合の回路図を以下に示します。
<試作品外観>下記の写真には上記回路図にはない、また本テーマと関係のない部品が多々写っています
<プログラム例> // YHY024 液晶表示 #include <proc/p32mx795f512l.h> //PIC32MX460F512L #include <plib.h> // PIC32 peripheral library //for SYSTEMConfigPerformance() #include "colorlcd_libdsPICVH.h" #include <math.h> #include <stdlib.h> //#include "1lcd_lib_C32.h" // コンフィギュレーション設定 // CPU=80MHz Peri=80MHz,HS+PLL,Divider=1/2,PLL=x20,WDT=Off #pragma config FNOSC=PRIPLL, POSCMOD=HS, FPLLIDIV=DIV_2 #pragma config FPLLMUL=MUL_20, FPBDIV=DIV_1, FPLLODIV=DIV_1 #pragma config FWDTEN=OFF, ICESEL=ICS_PGx2 char Buf[17]; //文字列のバッファー用レジスタ char str_Hellow[] = "Hellow"; char str_World[] = "World !!"; char str_Tokyo[] = "Tokyo"; char str_Japan[] = "Japan"; char str_Chiyodaku[] = "Chiyodaku"; char str_Sotokanda[] = "Sotokanda"; char str_Akihabara[] = "Akihabara"; char str_AKB48[] = "AKB48"; long int T0 = 5000; //int Clock = 80000000; //80MHz /* void delay_us(unsigned int usec) //1μsec遅延関数 { int count; count = (int)(Clock/20000000)*usec; do //実測: at Clock=80000000 { //delay_us(1000)→1003μsec、 delay_us(100)→102μsec、delay_us(10)→11μsec、delay_us(1)→1.6μsec asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); count--; }while(count != 0); } void delay_ms(unsigned int msec) //1msec遅延関数 { unsigned int i; for(i=0; i<msec; i++) // DelayUS(1000); delay_us(1000); } */ void DisplayFunc() { long i,j,index; //文字列描画 Glcd_Str(0,0,str_Hellow,BLACK,WHITE); Glcd_Str(1,1,str_World,RED,WHITE); Glcd_Str(2,2,str_Japan,BLUE,WHITE); Glcd_Str(3,3,str_Tokyo,WHITE,BLACK); Glcd_Str(4,4,str_Chiyodaku,RED,BLACK); Glcd_Str(5,5,str_Sotokanda,GREEN,BLACK); Glcd_Str(6,6,str_Akihabara,RED,YELLOW); Glcd_Str(7,7,str_AKB48,GREEN,YELLOW); delay_ms(T0); // 3秒待ち Glcd_Clear(BLACK); // クリア //ASCII文字の描画 Glcd_Clear(0); // クリア //文字間隔小 for(j=0; j<8; j++) // ASCII文字表示(前半96文字表示) { // 16文字/行 for(i=0; i<16; i++) { index = j*16+i+0x20; // 96文字で繰り返し Glcd_Char(j, i, index,WHITE,BLACK); //lcd_Char():文字間隔小 //文字表示制御 } } delay_ms(1000); // 3秒待ち Glcd_Clear(0); // クリア for(j=0; j<8; j++) // ASCII文字表示 { // 18文字/行 for(i=0; i<18; i++) { index = j*18+i+0x50; Glcd_Char(j, i, index,WHITE,BLACK); // lcd_Char1():文字間隔大 //文字表示制御 } } delay_ms(T0); // 3秒待ち Glcd_Clear(0); // クリア //画面全体描画 delay_ms(1000); Glcd_Clear(0); // 全消去(全部空白)) delay_ms(1000); Glcd_Clear(0xFF); // ベタ黒(全部黒) delay_ms(1000); Glcd_Clear(0); //斜め直線描画 Glcd_Clear(0); // 全クリア for(i=0; i<240; i++) // 斜め直線の表示 { Glcd_Pixel(i,i,1); // CS1側 Glcd_Pixel(240+i, i,1); // CS2側 } delay_ms(T0); // 3秒待ち Glcd_Clear(0); // 全クリア Glcd_Clear(0xFF); // 全部黒 for(i=0; i<240; i++) // 斜め直線白抜き表示 { Glcd_Pixel(i,i,0); // CS1側 Glcd_Pixel(240+i, i,0); // CS2側 } delay_ms(T0); // 3秒待ち Glcd_Clear(0); //この部分を追加するとメモリ不足となる // 直線描画テスト i = 0; for(j=0; j<120; j+=10) // ボックス表示 { Glcd_Line(j,j, 319-j, j,YELLOW); // 次第に小さなボックスへ Glcd_Line(j,j, j, 239 -j,YELLOW); Glcd_Line(319-j,239-j, 319-j,j,YELLOW); Glcd_Line(319-j,239-j, j,239-j,YELLOW); delay_ms(500); } delay_ms(T0); Glcd_Clear(0); //円の描画 for(i = 0; i < 10; i++) { Glcd_Circle(320/2 + 5*i,240/2,240/2,GREEN); } delay_ms(T0); Glcd_Clear(0); } int main(void) { int i; SYSTEMConfigPerformance(80000000); // システム最適化 DDPCONbits.JTAGEN = 0; //I/OポートとしてRA0、RA1、RA4、RA5をつかう場合、電源投入後DDPCONレジスタのbit3を0に、設定する必要があり;ます。 mJTAGPortEnable(DEBUG_JTAGPORT_OFF); // JTAGを無効化 TRISB = 0; //何故か TRISB = 0; を設定するとキャラタ液晶は動作しない //CGポートに影響? TRISC = 0; TRISD = 0; TRISE = 0; //Eポートを出力モードに設定 TRISG = 0; // 液晶表示器の初期化 Glcd_Init(); Glcd_Clear(BLACK); /* //キャラクタ液晶 lcd_init(); // LCD初期化 lcd_cmd(0b00001100); // カーソル:OFF ブリンク:OFF lcd_clear(); // 全消去 lcd_cmd(0x80); //1行目 sprintf(Buf,"PIC32MX795F512L +");//C30とは異なり、arguement 不要 lcd_str(Buf); //液晶表示 L lcd_cmd(0xC0); //1行目 sprintf(Buf,"5VGA_YHY024006A");//C30とは異なり、arguement 不要 lcd_str(Buf); */ while(1) { DisplayFunc(); } } //----------------------------------------------------------------------------------------------- //colorlcd_libdsPICVH.h //このグラフィックライブラリは 後閑哲也さんが設計されたdsPIC用グラフィックライブラリを //PIC32MX 、 データバス:8ビットパラレル、 ポート(汎用ポートモード): RE0-RE7 用に //変更したものです。 /************************************************* * グラフィック液晶表示器用ライブラリ ヘッダ * ポートの定義 * 関数プロトタイプ **************************************************/ //#include "p33FJ64GP802.h" #include <proc/p32mx795f512l.h> //PIC32MX460F512L #define Fosc 20 //#define Fosc 80 /* LCD Ports define */ #define LCD_CS LATDbits.LATD10 #define LCD_RS LATGbits.LATG7 #define LCD_WR LATGbits.LATG8 #define LCD_RESET LATGbits.LATG9 //#define LCD_RD LATGbits.LATG10 //使っていない #define ENDCOL 320 // X #define ENDROW 240 // Y #define XChar (short)((ENDCOL) / 12) #define YLine (short)((ENDROW) / 14) #define Nop() asm("NOP") /******************************************* * 16bit Color Difinition *******************************************/ #define WHITE 0xFFFF #define BLACK 0x0000 #define RED 0xF800 #define GREEN 0x07E0 #define BLUE 0x001F #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define BROWN 0x8000 #define ORANGE 0xFC00 #define PERPLE 0x8010 #define COBALT 0x041F /*** 関数プロトタイプ ****/ void Glcd_out(unsigned short int index, unsigned short int data); void Glcd_Init(void); void Glcd_Clear(unsigned short Color); void Glcd_Pixel(short Xpos, short Ypos, unsigned short Color); void Glcd_Char(char colum, char line, unsigned char letter, unsigned short Color1, unsigned short Color2); void Glcd_Str(char colum, char line, char *s, unsigned short Color1, unsigned short Color2); void Glcd_Line(short x0, short y0, short x1, short y1, unsigned short Color); void Glcd_Circle(int x0, int y0, int r, unsigned short color); //void delay_us(unsigned short time); //void delay_ms(unsigned short time); //------------------------------------------------------------------------------------------ //colorlcd_libdsPICVH.c //このグラフィックライブラリは 後閑哲也さんが設計されたdsPIC用グラフィックライブラリを //PIC32MX 、 データバス:8ビットパラレル、 ポート(汎用ポートモード): RE0-RE7 用に //変更したものです。 /******************************************************** * カラーグラフィックLCD(240x320ドット)用ライブラリ * 横表示で設定 * Glcd_Init(); // 初期化 * Glcd_Clear(); // 全画面消去 * Glcd_Pixel(); // 1ドット表示 * Glcd_Char(); // ANK文字表示 * Glcd_Str(); // ANK文字列表示 * Glcd_Line(); // 直線描画 * Glcd_Circle(); // 円描画 *********************************************************/ #include "colorlcd_libdsPICVH.h" #include "ASCII12dot.h" //ASCII 12x12dot /************************************ * レジスタ設定とデータ出力関数 *************************************/ void Glcd_out(unsigned short int index, unsigned short int data){ // Index上位バイト出力 LCD_CS = 0; // CS Low LCD_RS = 0; // Command LATE = ((index>>8) & 0x00FF) | (LATE & 0xFF00); LCD_WR = 0; // WR out Nop(); LCD_WR = 1; // Index下位バイト出力 LATE = (index & 0x00FF) | (LATE & 0xFF00); LCD_WR = 0; // WR out Nop(); LCD_WR = 1; // Data上位バイト出力 LCD_RS = 1; // Data LATE = ((data>>8) & 0x00FF) | (LATE & 0xFF00); LCD_WR = 0; // WR out Nop(); LCD_WR = 1; // Index下位バイト出力 LATE = (data & 0x00FF) | (LATE & 0xFF00); LCD_WR = 0; // WR out Nop(); LCD_WR = 1; LCD_CS = 1; // CS High } /**************************** * LCD初期化関数 *****************************/ void Glcd_Init(void){ delay_ms(20); // LCD_RD = 1; LCD_CS = 1; // CS High LCD_WR = 1; // WR High LCD_RESET = 0; // Reset LCD delay_ms(0x1); // 1msec wait LCD_RESET = 1; // Clear RESET delay_ms(25); // 25msec wait Glcd_out(0x00E3, 0x3008); // Set internal timing Glcd_out(0x00E7, 0x0012); // Set internal timing Glcd_out(0x00EF, 0x1231); // Set internal timing Glcd_out(0x0001, 0x0000); // set SS and SM bit Glcd_out(0x0002, 0x0700); // set line inversion Glcd_out(0x0003, 0x1018); // set GRAM write direction and BGR=1, 16bit color Glcd_out(0x0004, 0x0000); // Resize register Glcd_out(0x0008, 0x0207); // set the back porch and front porch Glcd_out(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0] Glcd_out(0x000A, 0x0000); // FMARK function Glcd_out(0x000C, 0x0000); // RGB interface setting Glcd_out(0x000D, 0x0000); // Frame marker Position Glcd_out(0x000F, 0x0000); // RGB interface polarity /********* 電源オンシーケンス **************/ Glcd_out(0x0010, 0x0000); // SAP, BT[3:0], AP[2:0], DSTB, SLP, STB Glcd_out(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] Glcd_out(0x0012, 0x0000); // VREG1OUT voltage Glcd_out(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude delay_ms(200); // コンデンサ放電待ち Glcd_out(0x0010, 0x1490); // SAP, BT[3:0], AP[2:0], DSTB, SLP, STB Glcd_out(0x0011, 0x0227); // R11h=0x0221 at VCI=3.3V ,DC1[2:0], DC0[2:0], VC[2:0] delay_ms(50); // 遅延 50ms Glcd_out(0x0012, 0x001c); // External reference voltage= Vci; delay_ms(50); // 遅延 50ms Glcd_out(0x0013, 0x0A00); // R13=0F00 when R12=009E;VDV[4:0] for VCOM amplitude Glcd_out(0x0029, 0x000F); // R29=0019 when R12=009E;VCM[5:0] for VCOMH//0012// Glcd_out(0x002B, 0x000D); // Frame Rate = 91Hz delay_ms(50); // 遅延 50ms Glcd_out(0x0020, 0x0000); // GRAM horizontal Address Glcd_out(0x0021, 0x0000); // GRAM Vertical Address /********** ガンマ補正 **********/ Glcd_out(0x0030, 0x0000); Glcd_out(0x0031, 0x0203); Glcd_out(0x0032, 0x0001); Glcd_out(0x0035, 0x0205); Glcd_out(0x0036, 0x030C); Glcd_out(0x0037, 0x0607); Glcd_out(0x0038, 0x0405); Glcd_out(0x0039, 0x0707); Glcd_out(0x003C, 0x0502); Glcd_out(0x003D, 0x1008); /*********** GRAM領域設定 *********/ Glcd_out(0x0050, 0x0000); // Horizontal GRAM Start Address Glcd_out(0x0051, 0x00EF); // Horizontal GRAM End Address Glcd_out(0x0052, 0x0000); // Vertical GRAM Start Address Glcd_out(0x0053, 0x013F); // Vertical GRAM Start Address Glcd_out(0x0060, 0xA700); // Gate Scan Line 横表示用 Glcd_out(0x0061, 0x0001); // NDL,VLE, REV Glcd_out(0x006A, 0x0000); // set scrolling line /************* 部分表示制御 ************/ Glcd_out(0x0080, 0x0000); // 部分表示1位置 Glcd_out(0x0081, 0x0000); // 部分表示1RAM開始アドレス Glcd_out(0x0082, 0x0000); // 部分表示1RAM終了アドレス Glcd_out(0x0083, 0x0000); // 部分表示2位置 Glcd_out(0x0084, 0x0000); // 部分表示2RAN開始アドレス Glcd_out(0x0085, 0x0000); // 部分表示2RAM終了アドレス /************** パネル制御 ************/ Glcd_out(0x0090, 0x0010); // 1ラインクロック数 Glcd_out(0x0092, 0x0600); // ゲートオーバーラップクロック数 Glcd_out(0x0093, 0x0003); // 出力タイミング Glcd_out(0x0095, 0x0110); // RGBの1ラインクロック数 Glcd_out(0x0097, 0x0000); // 出力タイミング Glcd_out(0x0098, 0x0000); // 出力タイミング /***** 表示制御 *****/ Glcd_out(0x0007, 0x0133); // 262K color and display ON } /*************************** * 画面消去関数 * 消去用色指定あり ****************************/ void Glcd_Clear(unsigned short Color){ int i, j; Glcd_out(0x0020, 0); // 原点にセット Glcd_out(0x0021, 0); for( j=0; j<ENDROW; j++){ // Y軸全部 for(i=0; i<ENDCOL; i++){ // X軸全部 Glcd_out(0x0022, Color); // 同色で埋める } } } /*********************************** * 1ピクセル表示関数 * 座標は(0,0)-(319,239) ***********************************/ void Glcd_Pixel(short Xpos, short Ypos, unsigned short Color){ if((Xpos<ENDCOL) && (Ypos<ENDROW)){ Glcd_out(0x0020, Ypos); // 座標指定 Glcd_out(0x0021, Xpos); Glcd_out(0x0022, Color); // ドット表示 } } /*************************** * 直線描画関数 ***************************/ #define abs(a) (((a)>0) ? (a) : -(a)) void Glcd_Line(short x0, short y0, short x1, short y1, unsigned short Color) { short steep, t; short deltax, deltay, error; short x, y; short ystep; y0=ENDROW-y0 -1; // Y座標反転 y1=ENDROW-y1 -1; /// 差分の大きいほうを求める steep = (abs(y1 - y0) > abs(x1 - x0)); /// x、yの入れ替え if(steep){ t = x0; x0 = y0; y0 = t; t = x1; x1 = y1; y1 = t; } if(x0 > x1) { t = x0; x0 = x1; x1 = t; t = y0; y0 = y1; y1 = t; } deltax = x1 - x0; // 傾き計算 deltay = abs(y1 - y0); error = 0; y = y0; /// 傾きでステップの正負を切り替え if(y0 < y1) ystep = 1; else ystep = -1; /// 直線を点で描画 for(x=x0; x<=x1; x++) { if(steep) Glcd_Pixel(y,x,Color); else Glcd_Pixel(x,y,Color); error += deltay; if((error << 1) >= deltax) { y += ystep; error -= deltax; } } } /************************************* * 円を描く関数 * 中心点と半径を指定 * (Fussyさんのアルゴリズムを使用) **************************************/ void Glcd_Circle(int x0, int y0, int r, unsigned short color) { int x = r; int y = 0; int F = -2 * r + 3; while(x >= y){ Glcd_Pixel(x0+x, y0+y, color); Glcd_Pixel(x0-x, y0+y, color); Glcd_Pixel(x0+x, y0-y, color); Glcd_Pixel(x0-x, y0-y, color); Glcd_Pixel(x0+y, y0+x, color); Glcd_Pixel(x0-y, y0+x, color); Glcd_Pixel(x0+y, y0-x, color); Glcd_Pixel(x0-y, y0-x, color); if(F >= 0){ x--; F -= 4 * x; } y++; F += 4 * y + 2; } } /***************************************** * ANK文字表示関数 12x12ドット * 320/12=26文字/行 240/14=17行 * (0, 0) - (25, 16)の範囲 ******************************************/ void Glcd_Char(char colum, char line, unsigned char letter, unsigned short Color1, unsigned short Color2){ unsigned char j, i, Mask; if((colum < XChar) && (line < YLine)){ // 範囲チェック // ANK表示出力 3バイトの2ラインずつを6回繰り返す for(j=0; j<6; j++){ // 8ドット連続部の表示 Mask = 0x80; for(i=0; i<8; i++){ // 1ライン目前半8ドット表示 if((ANKFont[letter][j*3] & Mask) != 0) Glcd_Pixel(colum*12+i+4, line*14+j*2+2, Color1); else Glcd_Pixel(colum*12+i+4, line*14+j*2+2, Color2); //背景色 // 2ライン目後半8ドット表示 if((ANKFont[letter][j*3+2] & Mask) != 0) Glcd_Pixel(colum*12+i+8, line*14+j*2+3, Color1); else Glcd_Pixel(colum*12+i+8, line*14+j*2+3, Color2); //背景色 Mask = Mask >> 1; } // 分割部4ドットずつ表示 Mask = 0x80; // 1ライン目後半4ドット表示 for(i=0; i<4; i++){ if((ANKFont[letter][j*3+1] & Mask) != 0) Glcd_Pixel(colum*12+i+12, line*14+j*2+2, Color1); else Glcd_Pixel(colum*12+i+12, line*14+j*2+2, Color2); //背景色 Mask = Mask >> 1; } // 2ライン目前半4ドット表示 for(i=4; i<8; i++){ if((ANKFont[letter][j*3+1] & Mask) != 0) Glcd_Pixel(colum*12+i, line*14+j*2+3, Color1); else Glcd_Pixel(colum*12+i, line*14+j*2+3, Color2); //背景色 Mask = Mask >> 1; } } } } /****************************** * 文字列描画関数 * 16文字x20行で指定 ******************************/ void Glcd_Str(char colum, char line, char *s, unsigned short Color1, unsigned short Color2) { while (*s){ Glcd_Char(colum++, line, *s++, Color1, Color2); if(colum >= XChar){ line++; colum = 0; if(line >= YLine) line = 0; } } } /********************************** * ループ遅延関数 usec単位 **********************************/ void delay_us(unsigned short usec){ unsigned short i, Max; Max = 2*usec * Fosc/5; for(i=0; i<Max; i++) { } } /********************************** * ループ遅延関数 msec単位 **********************************/ void delay_ms(unsigned short msec){ unsigned short i; for(i=0; i<msec; i++) delay_us(1000); } //------------------------------------------------------------------------------ //ASCII12dot.h //このグラフィックライブラリは後閑哲也さんが設計されたものです。 /*************************************************** * ASCIIフォントデータ 12x12ドット * M+ Bitmap Fontsより変換して作成 * ASCII Code 0x20 to 0xFF ****************************************************/ const char ANKFont[256][18] = { {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //SP {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x0,0x0,0x0,0x4,0x0,0x0}, //! {0x0,0x1,0x20,0x24,0x4,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //" {0x0,0x0,0x90,0x9,0x0,0x90,0x3F,0xC0,0x90,0x9,0x3,0xFC,0x9,0x0,0x90,0x9,0x0,0x0}, //# {0x0,0x0,0x40,0x1F,0x2,0x48,0x24,0x1,0xF0,0x4,0x80,0x48,0x24,0x81,0xF0,0x4,0x0,0x0}, //$ {0x0,0x3,0x10,0x49,0x4,0xA0,0x4A,0x3,0x40,0x5,0x80,0xA4,0xA,0x41,0x24,0x11,0x80,0x0}, //% {0x0,0x0,0xE0,0x11,0x1,0x10,0x12,0x0,0xC8,0x12,0x82,0x10,0x21,0x2,0x28,0x1C,0x40,0x0}, //& {0x4,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //' {0x0,0x40,0x8,0x1,0x0,0x10,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x10,0x1,0x0,0x8}, //( {0x40,0x2,0x0,0x10,0x1,0x0,0x8,0x0,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x2,0x0}, //) {0x0,0x0,0x40,0x24,0x81,0x50,0xE,0x1,0x50,0x24,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0}, //* {0x0,0x0,0x0,0x4,0x0,0x40,0x4,0x0,0x40,0x7F,0xC0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, //+ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x30,0x6,0x0}, //, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //- {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x30,0x0,0x0}, //. {0x0,0x0,0x2,0x0,0x40,0x8,0x1,0x0,0x20,0x4,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x0}, /// {0x0,0x0,0xE0,0x11,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, //0 {0x0,0x0,0x40,0xC,0x1,0x40,0x24,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x3F,0x80,0x0}, {0x0,0x3,0xF8,0x1,0x0,0x20,0x4,0x0,0xE0,0x1,0x0,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0x60,0xA,0x0,0xA0,0x12,0x1,0x20,0x22,0x2,0x20,0x7F,0x80,0x20,0x2,0x0,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x2E,0x3,0x10,0x0,0x80,0x8,0x0,0x82,0x10,0x1E,0x0,0x0}, {0x0,0x0,0xF0,0x10,0x2,0x0,0x2E,0x3,0x10,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x3,0xF8,0x0,0x80,0x10,0x1,0x0,0x20,0x2,0x0,0x40,0x4,0x0,0x80,0x8,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x11,0x0,0xE0,0x11,0x2,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x20,0x82,0x8,0x11,0x80,0xE8,0x0,0x80,0x10,0x1E,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0}, //: {0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0xC,0x0,0xC0,0x18,0x0,0x0}, //; {0x0,0x0,0x0,0x0,0xC0,0x30,0xC,0x3,0x0,0xC0,0x3,0x0,0xC,0x0,0x30,0x0,0xC0,0x0}, //< {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0xFC,0x0,0x0,0x0,0x7F,0xC0,0x0,0x0,0x0,0x0}, //= {0x0,0x0,0x0,0x60,0x1,0x80,0x6,0x0,0x18,0x0,0x60,0x18,0x6,0x1,0x80,0x60,0x0,0x0}, //> {0x0,0x0,0xE0,0x11,0x2,0x8,0x0,0x80,0x10,0x2,0x0,0x40,0x4,0x0,0x0,0x4,0x0,0x0}, //? {0x0,0x0,0xF0,0x30,0x82,0x64,0x49,0x44,0x94,0x49,0x44,0x94,0x27,0x83,0x0,0xE,0x0,0x0}, //@ {0x0,0x0,0x40,0x4,0x0,0xA0,0xA,0x1,0x10,0x11,0x3,0xF8,0x20,0x84,0x4,0x40,0x40,0x0}, //A {0x0,0x3,0xF0,0x20,0x82,0x8,0x20,0x83,0xF0,0x20,0x82,0x4,0x20,0x42,0x8,0x3F,0x0,0x0}, {0x0,0x0,0xF8,0x10,0x42,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x1,0x4,0xF,0x80,0x0}, {0x0,0x3,0xE0,0x21,0x82,0x8,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x82,0x18,0x3E,0x0,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x20,0x3,0xF0,0x20,0x2,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x20,0x3,0xF0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0}, {0x0,0x0,0xF8,0x10,0x42,0x0,0x20,0x2,0x3C,0x20,0x42,0x4,0x20,0x41,0xC,0xF,0x40,0x0}, {0x0,0x2,0x4,0x20,0x42,0x4,0x20,0x43,0xFC,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x40,0x0}, {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x41,0x4,0x10,0x41,0x2,0x20,0x1C,0x0,0x0}, {0x0,0x2,0x8,0x21,0x2,0x20,0x24,0x2,0x80,0x34,0x2,0x20,0x21,0x2,0x8,0x20,0x40,0x0}, {0x0,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, {0x0,0x4,0x4,0x60,0xC5,0x14,0x4A,0x44,0x44,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x40,0x0}, {0x0,0x2,0x8,0x30,0x82,0x88,0x24,0x82,0x28,0x21,0x82,0x8,0x20,0x82,0x8,0x20,0x80,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0xF,0x0,0x0}, {0x0,0x3,0xE0,0x21,0x2,0x8,0x20,0x82,0x10,0x3E,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0xF,0x0,0x20}, {0x0,0x3,0xE0,0x21,0x2,0x8,0x20,0x82,0x10,0x3E,0x2,0x10,0x21,0x2,0x8,0x20,0x80,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x10,0x0,0xF0,0x0,0x80,0x4,0x20,0x41,0x8,0xF,0x0,0x0}, {0x0,0x7,0xFC,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x2,0x8,0x20,0x82,0x8,0x11,0x1,0x10,0x11,0x0,0xA0,0xA,0x0,0x40,0x4,0x0,0x0}, {0x0,0x4,0x44,0x44,0x44,0x44,0x44,0x42,0xA8,0x2A,0x82,0xA8,0x11,0x1,0x10,0x11,0x0,0x0}, {0x0,0x2,0x8,0x20,0x81,0x10,0xA,0x0,0x40,0x4,0x0,0xA0,0x11,0x2,0x8,0x20,0x80,0x0}, {0x0,0x2,0x8,0x20,0x81,0x10,0x11,0x0,0xA0,0xA,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x3,0xF8,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, //Z {0x0,0x40,0x8,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x8}, //[ {0x0,0x2,0x8,0x20,0x81,0x10,0x11,0x3,0xF8,0x4,0x0,0x40,0x3F,0x80,0x40,0x4,0x0,0x0}, //\// {0x40,0x2,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x2,0x0}, //] {0x4,0x0,0xA0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //^ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF,0xFF}, //_ {0x8,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //' {0x0,0x0,0x0,0x0,0x0,0x0,0xF,0x0,0x8,0x7,0x81,0x88,0x10,0x81,0x18,0xE,0x80,0x0}, //a {0x0,0x1,0x0,0x10,0x1,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x90,0x16,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x88,0x10,0x1,0x0,0x10,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x8,0x0,0x80,0x8,0x6,0x80,0x98,0x10,0x81,0x8,0x10,0x80,0x98,0x6,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x90,0x10,0x81,0xF8,0x10,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x38,0x4,0x0,0x40,0x4,0x1,0xF8,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x80,0x98,0x10,0x81,0x8,0x9,0x80,0x68,0x0,0x80,0x10}, {0x0,0x1,0x0,0x10,0x1,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x80,0x0}, {0x0,0x0,0x40,0x4,0x0,0x0,0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x20,0x2,0x0,0x0,0x0,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x40}, {0x0,0x1,0x0,0x10,0x1,0x0,0x10,0x81,0x10,0x12,0x1,0x40,0x12,0x1,0x10,0x10,0x80,0x0}, {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x59,0x86,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x17,0x1,0x88,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xE,0x1,0x10,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x90,0x16,0x1,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x80,0x98,0x10,0x81,0x8,0x10,0x80,0x98,0x6,0x80,0x8}, {0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x1,0x90,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xF,0x1,0x8,0x10,0x0,0xF0,0x0,0x81,0x8,0xF,0x0,0x0}, {0x0,0x0,0x80,0x8,0x0,0x80,0x3F,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x81,0x18,0xE,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x82,0x8,0x11,0x1,0x10,0xA,0x0,0xA0,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x44,0x44,0x44,0x44,0x42,0xA8,0x2A,0x81,0x10,0x11,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x81,0x10,0xA,0x0,0x40,0xA,0x1,0x10,0x20,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x81,0x8,0x8,0x80,0x90,0x5,0x0,0x20,0x2,0x0,0x40}, {0x0,0x0,0x0,0x0,0x0,0x0,0x1F,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x1F,0x80,0x0}, //z {0x0,0xC0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x6,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10}, //{ {0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40}, //| {0x60,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0xC,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0}, //} {0xFF,0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //~ //特殊文字 {0x0,0x7,0xFC,0x4,0xF,0xFE,0x95,0x27,0xFC,0x44,0x47,0xFC,0x44,0x47,0xFC,0x4,0x20,0x7E}, //電 {0x0,0x7,0xFE,0x40,0x4,0x10,0x41,0x4,0x10,0x5F,0xE4,0x10,0x41,0x8,0x10,0x81,0x1,0xFE}, //圧 {0x1,0x0,0x10,0x9F,0xE4,0x24,0x4,0x48,0xFA,0x40,0x20,0x54,0x5,0x42,0x54,0x49,0x48,0x96}, //流 {0x20,0x2,0x0,0x3F,0xE4,0x20,0x82,0x3,0xFC,0x22,0x2,0x20,0xFF,0xE0,0x20,0x2,0x0,0x20}, //年 {0x0,0x3,0xFC,0x20,0x42,0x4,0x3F,0xC2,0x4,0x20,0x43,0xFC,0x20,0x42,0x4,0x40,0x44,0x1C}, //月 {0x0,0x3,0xFC,0x20,0x42,0x4,0x20,0x42,0x4,0x3F,0xC2,0x4,0x20,0x42,0x4,0x20,0x43,0xFC}, //日 {0x1,0x0,0x10,0xF7,0xE9,0x10,0x91,0x9,0xFE,0xF0,0x49,0xFE,0x90,0x49,0x44,0xF2,0x40,0xC}, //時 {0x0,0x2,0x78,0x20,0x82,0x4,0x40,0x44,0x2,0xBF,0xA8,0x88,0x8,0x81,0x8,0x10,0x86,0x30}, //分 {0x1,0x1,0x90,0xE1,0x2,0x54,0x29,0x2E,0x10,0x21,0x6,0x30,0x70,0x2A,0x4,0xA1,0x82,0xE0}, //秒 {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0x9,0x2,0x94,0x39,0xC0,0x0}, //Ω {0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x40,0x88,0x8,0x81,0x10,0x13,0x1,0xD0,0x20,0xC2,0x0}, //μ {0x0,0x0,0x0,0x0,0x0,0x0,0x31,0x84,0xA4,0x84,0x28,0x42,0x4A,0x43,0x18,0x0,0x0,0x0}, //∞ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x4,0x80,0x48,0x3,0x0}, //。 {0x3,0xC0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0}, //「 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80}, //」 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x2,0x0}, //、 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0x0,0x0,0x0}, //・ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x43,0xFC,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ヲ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xF8,0x0,0x80,0x48,0x5,0x0,0x40,0x8,0x1,0x0}, //ア {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x1,0x0,0x60,0x1A,0x0,0x20,0x2,0x0,0x20}, //イ {0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x40,0x3F,0x82,0x8,0x20,0x80,0x8,0x1,0x0,0xE0}, //ウ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xF8,0x4,0x0,0x40,0x4,0x0,0x40,0x3F,0x80,0x0}, //エ {0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x20,0x3F,0x80,0x20,0x6,0x0,0xA0,0x32,0x0,0x60}, //オ {0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x80,0xB,0x83,0xC8,0x9,0x0,0x50,0x4,0x0,0x40}, //ヤ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xE0,0x2,0x0,0x20,0x2,0x0,0x20,0x7F,0x80,0x0}, //ユ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xF8,0x0,0x80,0x8,0x1F,0x80,0x8,0x0,0x81,0xF8}, //ヨ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x48,0x24,0x82,0x48,0x1,0x0,0x10,0x6,0x1,0x80}, //ツ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x3F,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //ー {0x0,0x0,0x0,0x7F,0xE0,0x2,0x0,0x40,0x48,0x4,0x0,0x40,0x4,0x0,0x40,0x8,0x3,0x0}, //ア {0x0,0x0,0x0,0x0,0x40,0x8,0x1,0x0,0x60,0x1A,0x6,0x20,0x2,0x0,0x20,0x2,0x0,0x20}, //イ {0x0,0x0,0x40,0x4,0x7,0xFC,0x40,0x44,0x4,0x40,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ウ {0x0,0x0,0x0,0x0,0x7,0xFC,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0xFF,0xE0,0x0}, //エ {0x0,0x0,0x10,0x1,0x0,0x10,0x7F,0xE0,0x10,0x3,0x0,0x50,0x19,0x6,0x10,0x1,0x0,0x70}, //オ {0x0,0x0,0x40,0x4,0x0,0x40,0x7F,0xE0,0x42,0x4,0x20,0x42,0x8,0x20,0x82,0x10,0x26,0x1C}, //カ {0x0,0x0,0x80,0x8,0x0,0x80,0x7F,0xC0,0x40,0x4,0x0,0x40,0x7F,0xE0,0x20,0x2,0x0,0x20}, //キ {0x0,0x0,0x40,0x4,0x0,0x7C,0x8,0x41,0x4,0x20,0x40,0x8,0x0,0x80,0x10,0x6,0x3,0x80}, //ク {0x0,0x1,0x0,0x10,0x1,0x0,0x1F,0xE2,0x10,0x41,0x0,0x10,0x2,0x0,0x20,0xC,0x3,0x0}, //ケ {0x0,0x0,0x0,0x0,0x7,0xFC,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x7F,0xC0,0x4}, //コ {0x0,0x1,0x8,0x10,0x81,0x8,0x7F,0xE1,0x8,0x10,0x81,0x8,0x1,0x0,0x10,0x6,0x1,0x80}, //サ {0x0,0x0,0x0,0x30,0x0,0xC0,0x0,0x26,0x2,0x18,0x40,0x4,0x0,0x80,0x10,0x6,0x3,0x80}, //シ {0x0,0x0,0x0,0x3F,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x3,0x0,0x48,0x18,0x46,0x2}, //ス {0x0,0x1,0x0,0x10,0x1,0x0,0x11,0xC1,0xE4,0xF0,0x81,0x8,0x11,0x1,0x0,0x10,0x0,0xFC}, // {0x0,0x0,0x0,0x40,0x44,0x4,0x20,0x42,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, // {0x0,0x0,0x40,0x4,0x0,0x7C,0x8,0x41,0x44,0x22,0x40,0x18,0x0,0x80,0x10,0x6,0x3,0x80}, //タ {0x0,0x0,0x0,0x3,0xC7,0xC0,0x4,0x0,0x40,0xFF,0xE0,0x40,0x4,0x0,0x40,0x8,0x3,0x0}, //チ {0x0,0x0,0x0,0x48,0x44,0x84,0x24,0x42,0x44,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ツ {0x0,0x0,0x0,0x3F,0xC0,0x0,0x0,0x7,0xFE,0x2,0x0,0x20,0x2,0x0,0x20,0x4,0x1,0x80}, //テ {0x0,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0xC0,0x13,0x1,0xC,0x10,0x1,0x0,0x10,0x1,0x0}, //ト {0x0,0x0,0x20,0x2,0x0,0x20,0x7F,0xE0,0x20,0x2,0x0,0x20,0x4,0x0,0x40,0x8,0x3,0x0}, //ナ {0x0,0x0,0x0,0x0,0x3,0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0xE0,0x0}, //ニ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x40,0x88,0x4,0x80,0x30,0x1,0x0,0x28,0xC,0x47,0x0}, //ヌ {0x0,0x0,0x40,0x4,0x7,0xF8,0x0,0x80,0x10,0x2,0x0,0x60,0x1D,0x8E,0x46,0x4,0x0,0x40}, //ネ {0x0,0x0,0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80,0x10,0x1,0x0,0x20,0xC,0x3,0x0}, //ノ {0x0,0x0,0x0,0x10,0x1,0x8,0x10,0x81,0x4,0x20,0x42,0x4,0x20,0x24,0x2,0x40,0x24,0x2}, //ハ {0x0,0x2,0x0,0x20,0x2,0x0,0x21,0xC3,0xE0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x1,0xFC}, //ヒ {0x0,0x0,0x0,0x7F,0xC0,0x4,0x0,0x40,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x3,0x80}, //フ {0x0,0x0,0x0,0x0,0x0,0x0,0x1C,0x2,0x20,0x41,0x8,0x8,0x0,0x40,0x2,0x0,0x0,0x0}, //ヘ {0x0,0x0,0x40,0x4,0x0,0x40,0xFF,0xE0,0x40,0x4,0x2,0x48,0x44,0x48,0x42,0x4,0x0,0xC0}, //ホ {0x0,0x0,0x0,0x0,0x7,0xFE,0x0,0x20,0x4,0x0,0x81,0x10,0xA,0x0,0x40,0x2,0x0,0x10}, //マ {0x0,0x0,0x0,0x1C,0x0,0x38,0x0,0x0,0x0,0x1C,0x0,0x30,0x0,0x0,0x0,0x3C,0x0,0x38}, //ミ {0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x81,0x8,0x20,0x82,0x74,0xF8,0x40,0x4}, //ム {0x0,0x0,0x10,0x1,0x0,0x10,0x1,0x3,0x10,0xE,0x0,0x38,0x2,0x60,0x40,0x18,0x6,0x0}, //メ {0x0,0x0,0x0,0x7F,0x80,0x80,0x8,0x0,0x80,0xFF,0xE0,0x80,0x8,0x0,0x80,0x8,0x0,0x78}, //モ {0x0,0x1,0x0,0x10,0x1,0x1C,0x1E,0x4E,0x84,0x8,0x80,0x88,0x8,0x0,0x40,0x4,0x0,0x40}, //ヤ {0x0,0x0,0x0,0x0,0x3,0xF0,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0xFF,0xE0,0x0}, //ユ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x40,0x4,0x3F,0xC0,0x4,0x0,0x40,0x4,0x3F,0xC0,0x4}, //ヨ {0x0,0x0,0x0,0x3F,0x80,0x0,0x0,0x7,0xFC,0x0,0x40,0x4,0x0,0x80,0x10,0x6,0x1,0x80}, //ラ {0x0,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x80,0x8,0x1,0x0,0x10,0x2,0x0,0xC0}, //リ {0x0,0x0,0x20,0x12,0x1,0x20,0x12,0x1,0x20,0x12,0x21,0x22,0x22,0x42,0x24,0x42,0x84,0x30}, //ル {0x0,0x0,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x4,0x20,0x82,0x10,0x26,0x3,0x80}, //レ {0x0,0x0,0x0,0x0,0x7,0xFC,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x7F,0xC4,0x4}, //ロ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x40,0x44,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ワ {0x0,0x0,0x0,0x30,0x0,0xC0,0x0,0x20,0x2,0x0,0x40,0x4,0x0,0x80,0x10,0x6,0x3,0x80}, //ン {0x10,0x4,0x80,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //" {0x30,0x4,0x80,0x48,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //゜ /* 特殊文字 */ {0x30,0x4,0x80,0x48,0x3,0x38,0x4,0x40,0x80,0x8,0x0,0x80,0x8,0x0,0x44,0x3,0x80,0x0}, //℃ {0x4,0x0,0x40,0xA,0x0,0xA0,0xFB,0xE2,0x8,0x11,0x1,0x50,0x2A,0x83,0x18,0x40,0x40,0x0}, //☆ {0x4,0x0,0x40,0xE,0x0,0xE0,0xFF,0xE3,0xF8,0x1F,0x1,0xF0,0x3B,0x83,0x18,0x40,0x40,0x0}, //★ {0x0,0x0,0x60,0x19,0x82,0x4,0x20,0x44,0x2,0x40,0x22,0x4,0x20,0x41,0x98,0x6,0x0,0x0}, //○ {0x0,0x0,0x60,0x1F,0x83,0xFC,0x3F,0xC7,0xFE,0x7F,0xE3,0xFC,0x3F,0xC1,0xF8,0x6,0x0,0x0}, //● {0x0,0x0,0x60,0x19,0x82,0x4,0x26,0x44,0x92,0x49,0x22,0x64,0x20,0x41,0x98,0x6,0x0,0x0}, //◎ {0x0,0x0,0x40,0xA,0x1,0x10,0x20,0x84,0x4,0x80,0x24,0x4,0x20,0x81,0x10,0xA,0x0,0x40}, //◇ {0x0,0x0,0x40,0xE,0x1,0xF0,0x3F,0x87,0xFC,0xFF,0xE7,0xFC,0x3F,0x81,0xF0,0xE,0x0,0x40}, //◆ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x7F,0xC0,0x0}, //□ {0x0,0x0,0x0,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC0,0x0}, //■ {0x0,0x0,0x0,0x4,0x0,0xA0,0xA,0x1,0x10,0x11,0x2,0x8,0x20,0x84,0x4,0x7F,0xC0,0x0}, //△ {0x0,0x0,0x0,0x4,0x0,0xE0,0xE,0x1,0xF0,0x1F,0x3,0xF8,0x3F,0x87,0xFC,0x7F,0xC0,0x0}, //▲ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x20,0x82,0x8,0x11,0x1,0x10,0xA,0x0,0xA0,0x4,0x0,0x0}, //▽ {0x0,0x0,0x0,0x7F,0xC7,0xFC,0x3F,0x83,0xF8,0x1F,0x1,0xF0,0xE,0x0,0xE0,0x4,0x0,0x0}, //▼ {0x0,0x82,0x8,0x4F,0xE8,0x12,0xEF,0xE2,0x42,0x47,0xEF,0x8,0x27,0xEB,0x48,0xAF,0xE2,0x8}, //緯 {0x2,0x0,0x20,0x7F,0xE4,0x88,0x7F,0xE4,0x88,0x4F,0x84,0x0,0x9F,0xC8,0x88,0xF,0x7,0xE}, //度 {0x0,0x2,0x7E,0x40,0x29,0x24,0xF1,0x82,0x66,0x41,0xF,0x10,0x27,0xEB,0x10,0xA1,0x2,0xFE}, //経 {0x1,0x0,0x10,0x4F,0xE2,0x10,0xF,0xE0,0x92,0xEF,0xE2,0x30,0x25,0x42,0x92,0x50,0x8,0xFE}, //速 {0x4,0x0,0x40,0xFF,0xE1,0x10,0x1F,0x0,0x0,0xFF,0xE8,0x2,0x9F,0x29,0x12,0x9F,0x28,0x6}, //高 {0x4,0x0,0x40,0xFF,0xE8,0x42,0x3F,0x80,0x40,0x3F,0x80,0x40,0xFF,0xE0,0xA0,0x31,0x8C,0x6}, //実 {0x0,0x1,0xE2,0x92,0xA5,0xEA,0x12,0xA9,0xEA,0x52,0xA1,0x2A,0x5E,0xA4,0x2,0x92,0x2A,0x16}, //測 {0x0,0xF,0xFE,0x1,0x0,0x20,0x4,0x0,0xD0,0x34,0x8C,0x44,0x4,0x20,0x40,0x4,0x0,0x40}, //不 {0x4,0x2,0x4E,0x5F,0x8,0x50,0x1F,0xE2,0x92,0x4F,0x2C,0x22,0x5F,0xA5,0x22,0x7F,0xA4,0x26}, //衛 {0x0,0x3,0xF8,0x20,0x83,0xF8,0x20,0x83,0xF8,0x24,0x7,0xFC,0x84,0x3,0xF8,0x4,0xF,0xFE}, //星 {0x0,0x0,0xFC,0x88,0x44,0xFC,0x8,0x48,0xFC,0x40,0x0,0xFE,0xA,0xA2,0xAA,0x4A,0xA9,0xFE}, //温 {0x0,0x0,0xFC,0x88,0x44,0xFC,0x8,0x48,0xFC,0x40,0x0,0x50,0x55,0x24,0xD4,0x85,0x9,0xFE}, //湿 {0x0,0xF,0xFE,0x80,0x28,0x2,0x9F,0x29,0x12,0x91,0x29,0x12,0x9F,0x28,0x2,0x80,0x2F,0xFE}, //回 {0x0,0x2,0x3E,0xFC,0x2,0x0,0xFC,0xA,0x7E,0xFC,0x8A,0x48,0xFD,0x2,0x12,0xFE,0x22,0x3E}, //転 {0x0,0x7,0xFE,0x44,0x24,0x42,0x5F,0x24,0x42,0x5F,0xA4,0x2,0x5F,0x25,0x12,0x9F,0x28,0x6}, //周 {0x1,0x0,0x10,0x8F,0xE4,0x92,0x9,0x8,0xFC,0x48,0x40,0xA4,0x51,0x45,0x8,0x83,0x48,0xC2}, //波 {0x21,0xA,0x50,0x69,0xEF,0xE4,0x22,0x46,0x84,0xA5,0x4F,0x94,0x48,0x8C,0x88,0x31,0x4C,0xE2},//数 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0} };
<動作結果>
(その2)汎用ポート:RB8−RB15の場合
<試作品仕様>
・2.4インチQVGA液晶に PIC32MX795F512Lを使用して表示をおこなう
・液晶はaitendo YHY024006A(LCDコントローラ:ILI9325)を16ビットパラレルから8ビットパラレルに変更したものを使用すること。
(変更要領:「LCD & タッチセンサ活用の素」参照)
・インターフェースは PICの汎用ポートをつかった 8080 8ビットパラレルとする。
・汎用ポートは RB8−RB15 をつかうこと
・グラフィックライブラリは「LCD & タッチセンサ活用の素」にあるdsPIC用をPIC32用に変更してつかうこと。
<試作品回路図>(→回路図のPDFファイル)
PIC32MX795F512Lの場合の回路図を以下に示します。
<試作品外観>下記の写真には上記回路図にはない、また本テーマと関係のない部品が多々写っています
<プログラム例> //液晶表示 #include <proc/p32mx795f512l.h> //PIC32MX460F512L #include <plib.h> // PIC32 peripheral library //for SYSTEMConfigPerformance() #include "colorlcd_libdsPICVH.h" #include <math.h> #include <stdlib.h> //#include "1lcd_lib_C32.h" // コンフィギュレーション設定 // CPU=80MHz Peri=80MHz,HS+PLL,Divider=1/2,PLL=x20,WDT=Off #pragma config FNOSC=PRIPLL, POSCMOD=HS, FPLLIDIV=DIV_2 #pragma config FPLLMUL=MUL_20, FPBDIV=DIV_1, FPLLODIV=DIV_1 #pragma config FWDTEN=OFF, ICESEL=ICS_PGx2 char Buf[17]; //文字列のバッファー用レジスタ char str_Hellow[] = "Hellow"; char str_World[] = "World !!"; char str_Tokyo[] = "Tokyo"; char str_Japan[] = "Japan"; char str_Chiyodaku[] = "Chiyodaku"; char str_Sotokanda[] = "Sotokanda"; char str_Akihabara[] = "Akihabara"; char str_AKB48[] = "AKB48"; long int T0 = 1000; void DisplayFunc() { long i,j,index; //文字列描画 Glcd_Str(0,0,str_Hellow,BLACK,WHITE); Glcd_Str(1,1,str_World,RED,WHITE); Glcd_Str(2,2,str_Japan,BLUE,WHITE); Glcd_Str(3,3,str_Tokyo,WHITE,BLACK); Glcd_Str(4,4,str_Chiyodaku,RED,BLACK); Glcd_Str(5,5,str_Sotokanda,GREEN,BLACK); Glcd_Str(6,6,str_Akihabara,RED,YELLOW); Glcd_Str(7,7,str_AKB48,GREEN,YELLOW); delay_ms(T0); // 3秒待ち Glcd_Clear(BLACK); // クリア //ASCII文字の描画 Glcd_Clear(0); // クリア //文字間隔小 for(j=0; j<8; j++) // ASCII文字表示(前半96文字表示) { // 16文字/行 for(i=0; i<16; i++) { index = j*16+i+0x20; // 96文字で繰り返し Glcd_Char(j, i, index,WHITE,BLACK); //lcd_Char():文字間隔小 //文字表示制御 } } delay_ms(1000); // 3秒待ち Glcd_Clear(0); // クリア for(j=0; j<8; j++) // ASCII文字表示 { // 18文字/行 for(i=0; i<18; i++) { index = j*18+i+0x50; Glcd_Char(j, i, index,WHITE,BLACK); // lcd_Char1():文字間隔大 //文字表示制御 } } delay_ms(T0); // 3秒待ち Glcd_Clear(0); // クリア //画面全体描画 delay_ms(1000); Glcd_Clear(0); // 全消去(全部空白)) delay_ms(1000); Glcd_Clear(0xFF); // ベタ黒(全部黒) delay_ms(1000); Glcd_Clear(0); //斜め直線描画 Glcd_Clear(0); // 全クリア for(i=0; i<240; i++) // 斜め直線の表示 { Glcd_Pixel(i,i,1); // CS1側 Glcd_Pixel(240+i, i,1); // CS2側 } delay_ms(T0); // 3秒待ち Glcd_Clear(0); // 全クリア Glcd_Clear(0xFF); // 全部黒 for(i=0; i<240; i++) // 斜め直線白抜き表示 { Glcd_Pixel(i,i,0); // CS1側 Glcd_Pixel(240+i, i,0); // CS2側 } delay_ms(T0); // 3秒待ち Glcd_Clear(0); //この部分を追加するとメモリ不足となる // 直線描画テスト i = 0; for(j=0; j<120; j+=10) // ボックス表示 { Glcd_Line(j,j, 319-j, j,YELLOW); // 次第に小さなボックスへ Glcd_Line(j,j, j, 239 -j,YELLOW); Glcd_Line(319-j,239-j, 319-j,j,YELLOW); Glcd_Line(319-j,239-j, j,239-j,YELLOW); delay_ms(500); } delay_ms(T0); Glcd_Clear(0); //円の描画 for(i = 0; i < 10; i++) { Glcd_Circle(320/2 + 5*i,240/2,240/2,GREEN); } delay_ms(T0); Glcd_Clear(0); } int main(void) { int i; SYSTEMConfigPerformance(80000000); // システム最適化 DDPCONbits.JTAGEN = 0; //I/OポートとしてRA0、RA1、RA4、RA5をつかう場合、電源投入後DDPCONレジスタのbit3を0に、設定する必要があり;ます。 mJTAGPortEnable(DEBUG_JTAGPORT_OFF); // JTAGを無効化 TRISB = 0; //何故か TRISB = 0; を設定するとキャラタ液晶は動作しない //CGポートに影響? TRISC = 0; TRISD = 0; TRISE = 0; //Eポートを出力モードに設定 TRISG = 0; // 液晶表示器の初期化 Glcd_Init(); Glcd_Clear(BLACK); /* //キャラクタ液晶 lcd_init(); // LCD初期化 lcd_cmd(0b00001100); // カーソル:OFF ブリンク:OFF lcd_clear(); // 全消去 lcd_cmd(0x80); //1行目 sprintf(Buf,"PIC32MX795F512L +");//C30とは異なり、arguement 不要 lcd_str(Buf); //液晶表示 L lcd_cmd(0xC0); //1行目 sprintf(Buf,"5VGA_YHY024006A");//C30とは異なり、arguement 不要 lcd_str(Buf); */ while(1) { DisplayFunc(); } } //------------------------------------------------------------------------------------------------ //colorlcd_libdsPICVH.h //このグラフィックライブラリは 後閑哲也さんが設計されたdsPIC用グラフィックライブラリを //PIC32MX 、 データバス:8ビットパラレル、 ポート(汎用ポートモード): RB8-RB15 用に //変更したものです。 /************************************************* * グラフィック液晶表示器用ライブラリ ヘッダ * ポートの定義 * 関数プロトタイプ **************************************************/ //#include "p33FJ64GP802.h" #include <proc/p32mx795f512l.h> //PIC32MX460F512L #define Fosc 20 //#define Fosc 80 /* LCD Ports define */ //#define LCD_CS LATGbits.LATG6 #define LCD_CS LATDbits.LATD10 #define LCD_RS LATGbits.LATG7 #define LCD_WR LATGbits.LATG8 #define LCD_RESET LATGbits.LATG9 //#define LCD_RD LATGbits.LATG10 //使っていない #define ENDCOL 320 // X #define ENDROW 240 // Y #define XChar (short)((ENDCOL) / 12) #define YLine (short)((ENDROW) / 14) #define Nop() asm("NOP") /******************************************* * 16bit Color Difinition *******************************************/ #define WHITE 0xFFFF #define BLACK 0x0000 #define RED 0xF800 #define GREEN 0x07E0 #define BLUE 0x001F #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define BROWN 0x8000 #define ORANGE 0xFC00 #define PERPLE 0x8010 #define COBALT 0x041F /*** 関数プロトタイプ ****/ void Glcd_out(unsigned short int index, unsigned short int data); void Glcd_Init(void); void Glcd_Clear(unsigned short Color); void Glcd_Pixel(short Xpos, short Ypos, unsigned short Color); void Glcd_Char(char colum, char line, unsigned char letter, unsigned short Color1, unsigned short Color2); void Glcd_Str(char colum, char line, char *s, unsigned short Color1, unsigned short Color2); void Glcd_Line(short x0, short y0, short x1, short y1, unsigned short Color); void Glcd_Circle(int x0, int y0, int r, unsigned short color); //void delay_us(unsigned short time); //void delay_ms(unsigned short time); //--------------------------------------------------------------------------------------------------- //colorlcd_libdsPICVH.c //このグラフィックライブラリは 後閑哲也さんが設計されたdsPIC用グラフィックライブラリを //PIC32MX 、 データバス:8ビットパラレル、 ポート(汎用ポートモード): RB8-RB15 用に //変更したものです。 /******************************************************** * カラーグラフィックLCD(240x320ドット)用ライブラリ * 横表示で設定 * Glcd_Init(); // 初期化 * Glcd_Clear(); // 全画面消去 * Glcd_Pixel(); // 1ドット表示 * Glcd_Char(); // ANK文字表示 * Glcd_Str(); // ANK文字列表示 * Glcd_Line(); // 直線描画 * Glcd_Circle(); // 円描画 *********************************************************/ #include "colorlcd_libdsPICVH.h" #include "ASCII12dot.h" //ASCII 12x12dot /************************************ * レジスタ設定とデータ出力関数 *************************************/ void Glcd_out(unsigned short int index, unsigned short int data){ // Index上位バイトを出力 //出力先 RB8 - RB15 LCD_CS = 0; // CS Low LCD_RS = 0; // Command LATB = (index & 0xFF00) | (LATB & 0x00FF); LCD_WR = 0; // WR out Nop(); LCD_WR = 1; // Index下位バイトを出力 //出力先 RB8 - RB15 LATB = ((index<<8)&0xFF00) | (LATB & 0x00FF); LCD_WR = 0; // WR out Nop(); LCD_WR = 1; // Data上位バイトを出力 //出力先 RB8 - RB15 LCD_RS = 1; // Data LATB = (data & 0xFF00) | (LATB & 0x00FF); LCD_WR = 0; // WR out Nop(); LCD_WR = 1; // Index下位バイトを出力 //出力先 RB8 - RB15 LATB = ((data<<8)&0xFF00) | (LATB & 0x00FF); LCD_WR = 0; // WR out Nop(); LCD_WR = 1; LCD_CS = 1; // CS High } /**************************** * LCD初期化関数 *****************************/ void Glcd_Init(void){ delay_ms(20); // LCD_RD = 1; LCD_CS = 1; // CS High LCD_WR = 1; // WR High LCD_RESET = 0; // Reset LCD delay_ms(0x1); // 1msec wait LCD_RESET = 1; // Clear RESET delay_ms(25); // 25msec wait Glcd_out(0x00E3, 0x3008); // Set internal timing Glcd_out(0x00E7, 0x0012); // Set internal timing Glcd_out(0x00EF, 0x1231); // Set internal timing Glcd_out(0x0001, 0x0000); // set SS and SM bit Glcd_out(0x0002, 0x0700); // set line inversion Glcd_out(0x0003, 0x1018); // set GRAM write direction and BGR=1, 16bit color Glcd_out(0x0004, 0x0000); // Resize register Glcd_out(0x0008, 0x0207); // set the back porch and front porch Glcd_out(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0] Glcd_out(0x000A, 0x0000); // FMARK function Glcd_out(0x000C, 0x0000); // RGB interface setting Glcd_out(0x000D, 0x0000); // Frame marker Position Glcd_out(0x000F, 0x0000); // RGB interface polarity /********* 電源オンシーケンス **************/ Glcd_out(0x0010, 0x0000); // SAP, BT[3:0], AP[2:0], DSTB, SLP, STB Glcd_out(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] Glcd_out(0x0012, 0x0000); // VREG1OUT voltage Glcd_out(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude delay_ms(200); // コンデンサ放電待ち Glcd_out(0x0010, 0x1490); // SAP, BT[3:0], AP[2:0], DSTB, SLP, STB Glcd_out(0x0011, 0x0227); // R11h=0x0221 at VCI=3.3V ,DC1[2:0], DC0[2:0], VC[2:0] delay_ms(50); // 遅延 50ms Glcd_out(0x0012, 0x001c); // External reference voltage= Vci; delay_ms(50); // 遅延 50ms Glcd_out(0x0013, 0x0A00); // R13=0F00 when R12=009E;VDV[4:0] for VCOM amplitude Glcd_out(0x0029, 0x000F); // R29=0019 when R12=009E;VCM[5:0] for VCOMH//0012// Glcd_out(0x002B, 0x000D); // Frame Rate = 91Hz delay_ms(50); // 遅延 50ms Glcd_out(0x0020, 0x0000); // GRAM horizontal Address Glcd_out(0x0021, 0x0000); // GRAM Vertical Address /********** ガンマ補正 **********/ Glcd_out(0x0030, 0x0000); Glcd_out(0x0031, 0x0203); Glcd_out(0x0032, 0x0001); Glcd_out(0x0035, 0x0205); Glcd_out(0x0036, 0x030C); Glcd_out(0x0037, 0x0607); Glcd_out(0x0038, 0x0405); Glcd_out(0x0039, 0x0707); Glcd_out(0x003C, 0x0502); Glcd_out(0x003D, 0x1008); /*********** GRAM領域設定 *********/ Glcd_out(0x0050, 0x0000); // Horizontal GRAM Start Address Glcd_out(0x0051, 0x00EF); // Horizontal GRAM End Address Glcd_out(0x0052, 0x0000); // Vertical GRAM Start Address Glcd_out(0x0053, 0x013F); // Vertical GRAM Start Address Glcd_out(0x0060, 0xA700); // Gate Scan Line 横表示用 Glcd_out(0x0061, 0x0001); // NDL,VLE, REV Glcd_out(0x006A, 0x0000); // set scrolling line /************* 部分表示制御 ************/ Glcd_out(0x0080, 0x0000); // 部分表示1位置 Glcd_out(0x0081, 0x0000); // 部分表示1RAM開始アドレス Glcd_out(0x0082, 0x0000); // 部分表示1RAM終了アドレス Glcd_out(0x0083, 0x0000); // 部分表示2位置 Glcd_out(0x0084, 0x0000); // 部分表示2RAN開始アドレス Glcd_out(0x0085, 0x0000); // 部分表示2RAM終了アドレス /************** パネル制御 ************/ Glcd_out(0x0090, 0x0010); // 1ラインクロック数 Glcd_out(0x0092, 0x0600); // ゲートオーバーラップクロック数 Glcd_out(0x0093, 0x0003); // 出力タイミング Glcd_out(0x0095, 0x0110); // RGBの1ラインクロック数 Glcd_out(0x0097, 0x0000); // 出力タイミング Glcd_out(0x0098, 0x0000); // 出力タイミング /***** 表示制御 *****/ Glcd_out(0x0007, 0x0133); // 262K color and display ON } /*************************** * 画面消去関数 * 消去用色指定あり ****************************/ void Glcd_Clear(unsigned short Color){ int i, j; Glcd_out(0x0020, 0); // 原点にセット Glcd_out(0x0021, 0); for( j=0; j<ENDROW; j++){ // Y軸全部 for(i=0; i<ENDCOL; i++){ // X軸全部 Glcd_out(0x0022, Color); // 同色で埋める } } } /*********************************** * 1ピクセル表示関数 * 座標は(0,0)-(319,239) ***********************************/ void Glcd_Pixel(short Xpos, short Ypos, unsigned short Color){ if((Xpos<ENDCOL) && (Ypos<ENDROW)){ Glcd_out(0x0020, Ypos); // 座標指定 Glcd_out(0x0021, Xpos); Glcd_out(0x0022, Color); // ドット表示 } } /*************************** * 直線描画関数 ***************************/ #define abs(a) (((a)>0) ? (a) : -(a)) void Glcd_Line(short x0, short y0, short x1, short y1, unsigned short Color) { short steep, t; short deltax, deltay, error; short x, y; short ystep; y0=ENDROW-y0 -1; // Y座標反転 y1=ENDROW-y1 -1; /// 差分の大きいほうを求める steep = (abs(y1 - y0) > abs(x1 - x0)); /// x、yの入れ替え if(steep){ t = x0; x0 = y0; y0 = t; t = x1; x1 = y1; y1 = t; } if(x0 > x1) { t = x0; x0 = x1; x1 = t; t = y0; y0 = y1; y1 = t; } deltax = x1 - x0; // 傾き計算 deltay = abs(y1 - y0); error = 0; y = y0; /// 傾きでステップの正負を切り替え if(y0 < y1) ystep = 1; else ystep = -1; /// 直線を点で描画 for(x=x0; x<=x1; x++) { if(steep) Glcd_Pixel(y,x,Color); else Glcd_Pixel(x,y,Color); error += deltay; if((error << 1) >= deltax) { y += ystep; error -= deltax; } } } /************************************* * 円を描く関数 * 中心点と半径を指定 * (Fussyさんのアルゴリズムを使用) **************************************/ void Glcd_Circle(int x0, int y0, int r, unsigned short color) { int x = r; int y = 0; int F = -2 * r + 3; while(x >= y){ Glcd_Pixel(x0+x, y0+y, color); Glcd_Pixel(x0-x, y0+y, color); Glcd_Pixel(x0+x, y0-y, color); Glcd_Pixel(x0-x, y0-y, color); Glcd_Pixel(x0+y, y0+x, color); Glcd_Pixel(x0-y, y0+x, color); Glcd_Pixel(x0+y, y0-x, color); Glcd_Pixel(x0-y, y0-x, color); if(F >= 0){ x--; F -= 4 * x; } y++; F += 4 * y + 2; } } /***************************************** * ANK文字表示関数 12x12ドット * 320/12=26文字/行 240/14=17行 * (0, 0) - (25, 16)の範囲 ******************************************/ void Glcd_Char(char colum, char line, unsigned char letter, unsigned short Color1, unsigned short Color2){ unsigned char j, i, Mask; if((colum < XChar) && (line < YLine)){ // 範囲チェック // ANK表示出力 3バイトの2ラインずつを6回繰り返す for(j=0; j<6; j++){ // 8ドット連続部の表示 Mask = 0x80; for(i=0; i<8; i++){ // 1ライン目前半8ドット表示 if((ANKFont[letter][j*3] & Mask) != 0) Glcd_Pixel(colum*12+i+4, line*14+j*2+2, Color1); else Glcd_Pixel(colum*12+i+4, line*14+j*2+2, Color2); //背景色 // 2ライン目後半8ドット表示 if((ANKFont[letter][j*3+2] & Mask) != 0) Glcd_Pixel(colum*12+i+8, line*14+j*2+3, Color1); else Glcd_Pixel(colum*12+i+8, line*14+j*2+3, Color2); //背景色 Mask = Mask >> 1; } // 分割部4ドットずつ表示 Mask = 0x80; // 1ライン目後半4ドット表示 for(i=0; i<4; i++){ if((ANKFont[letter][j*3+1] & Mask) != 0) Glcd_Pixel(colum*12+i+12, line*14+j*2+2, Color1); else Glcd_Pixel(colum*12+i+12, line*14+j*2+2, Color2); //背景色 Mask = Mask >> 1; } // 2ライン目前半4ドット表示 for(i=4; i<8; i++){ if((ANKFont[letter][j*3+1] & Mask) != 0) Glcd_Pixel(colum*12+i, line*14+j*2+3, Color1); else Glcd_Pixel(colum*12+i, line*14+j*2+3, Color2); //背景色 Mask = Mask >> 1; } } } } /****************************** * 文字列描画関数 * 16文字x20行で指定 ******************************/ void Glcd_Str(char colum, char line, char *s, unsigned short Color1, unsigned short Color2) { while (*s){ Glcd_Char(colum++, line, *s++, Color1, Color2); if(colum >= XChar){ line++; colum = 0; if(line >= YLine) line = 0; } } } /********************************** * ループ遅延関数 usec単位 **********************************/ void delay_us(unsigned short usec){ unsigned short i, Max; Max = 2*usec * Fosc/5; for(i=0; i<Max; i++) { } } /********************************** * ループ遅延関数 msec単位 **********************************/ void delay_ms(unsigned short msec){ unsigned short i; for(i=0; i<msec; i++) delay_us(1000); } //---------------------------------------------------------------------------------------- //ASCII12dot.h //このグラフィックライブラリは後閑哲也さんが設計されたものです。 /*************************************************** * ASCIIフォントデータ 12x12ドット * M+ Bitmap Fontsより変換して作成 * ASCII Code 0x20 to 0xFF ****************************************************/ const char ANKFont[256][18] = { {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //SP {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x0,0x0,0x0,0x4,0x0,0x0}, //! {0x0,0x1,0x20,0x24,0x4,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //" {0x0,0x0,0x90,0x9,0x0,0x90,0x3F,0xC0,0x90,0x9,0x3,0xFC,0x9,0x0,0x90,0x9,0x0,0x0}, //# {0x0,0x0,0x40,0x1F,0x2,0x48,0x24,0x1,0xF0,0x4,0x80,0x48,0x24,0x81,0xF0,0x4,0x0,0x0}, //$ {0x0,0x3,0x10,0x49,0x4,0xA0,0x4A,0x3,0x40,0x5,0x80,0xA4,0xA,0x41,0x24,0x11,0x80,0x0}, //% {0x0,0x0,0xE0,0x11,0x1,0x10,0x12,0x0,0xC8,0x12,0x82,0x10,0x21,0x2,0x28,0x1C,0x40,0x0}, //& {0x4,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //' {0x0,0x40,0x8,0x1,0x0,0x10,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x10,0x1,0x0,0x8}, //( {0x40,0x2,0x0,0x10,0x1,0x0,0x8,0x0,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x2,0x0}, //) {0x0,0x0,0x40,0x24,0x81,0x50,0xE,0x1,0x50,0x24,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0}, //* {0x0,0x0,0x0,0x4,0x0,0x40,0x4,0x0,0x40,0x7F,0xC0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, //+ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x30,0x6,0x0}, //, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //- {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x30,0x0,0x0}, //. {0x0,0x0,0x2,0x0,0x40,0x8,0x1,0x0,0x20,0x4,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x0}, /// {0x0,0x0,0xE0,0x11,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, //0 {0x0,0x0,0x40,0xC,0x1,0x40,0x24,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x3F,0x80,0x0}, {0x0,0x3,0xF8,0x1,0x0,0x20,0x4,0x0,0xE0,0x1,0x0,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0x60,0xA,0x0,0xA0,0x12,0x1,0x20,0x22,0x2,0x20,0x7F,0x80,0x20,0x2,0x0,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x2E,0x3,0x10,0x0,0x80,0x8,0x0,0x82,0x10,0x1E,0x0,0x0}, {0x0,0x0,0xF0,0x10,0x2,0x0,0x2E,0x3,0x10,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x3,0xF8,0x0,0x80,0x10,0x1,0x0,0x20,0x2,0x0,0x40,0x4,0x0,0x80,0x8,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x11,0x0,0xE0,0x11,0x2,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x20,0x82,0x8,0x11,0x80,0xE8,0x0,0x80,0x10,0x1E,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0}, //: {0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0xC,0x0,0xC0,0x18,0x0,0x0}, //; {0x0,0x0,0x0,0x0,0xC0,0x30,0xC,0x3,0x0,0xC0,0x3,0x0,0xC,0x0,0x30,0x0,0xC0,0x0}, //< {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0xFC,0x0,0x0,0x0,0x7F,0xC0,0x0,0x0,0x0,0x0}, //= {0x0,0x0,0x0,0x60,0x1,0x80,0x6,0x0,0x18,0x0,0x60,0x18,0x6,0x1,0x80,0x60,0x0,0x0}, //> {0x0,0x0,0xE0,0x11,0x2,0x8,0x0,0x80,0x10,0x2,0x0,0x40,0x4,0x0,0x0,0x4,0x0,0x0}, //? {0x0,0x0,0xF0,0x30,0x82,0x64,0x49,0x44,0x94,0x49,0x44,0x94,0x27,0x83,0x0,0xE,0x0,0x0}, //@ {0x0,0x0,0x40,0x4,0x0,0xA0,0xA,0x1,0x10,0x11,0x3,0xF8,0x20,0x84,0x4,0x40,0x40,0x0}, //A {0x0,0x3,0xF0,0x20,0x82,0x8,0x20,0x83,0xF0,0x20,0x82,0x4,0x20,0x42,0x8,0x3F,0x0,0x0}, {0x0,0x0,0xF8,0x10,0x42,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x1,0x4,0xF,0x80,0x0}, {0x0,0x3,0xE0,0x21,0x82,0x8,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x82,0x18,0x3E,0x0,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x20,0x3,0xF0,0x20,0x2,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x20,0x3,0xF0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0}, {0x0,0x0,0xF8,0x10,0x42,0x0,0x20,0x2,0x3C,0x20,0x42,0x4,0x20,0x41,0xC,0xF,0x40,0x0}, {0x0,0x2,0x4,0x20,0x42,0x4,0x20,0x43,0xFC,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x40,0x0}, {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x41,0x4,0x10,0x41,0x2,0x20,0x1C,0x0,0x0}, {0x0,0x2,0x8,0x21,0x2,0x20,0x24,0x2,0x80,0x34,0x2,0x20,0x21,0x2,0x8,0x20,0x40,0x0}, {0x0,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, {0x0,0x4,0x4,0x60,0xC5,0x14,0x4A,0x44,0x44,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x40,0x0}, {0x0,0x2,0x8,0x30,0x82,0x88,0x24,0x82,0x28,0x21,0x82,0x8,0x20,0x82,0x8,0x20,0x80,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0xF,0x0,0x0}, {0x0,0x3,0xE0,0x21,0x2,0x8,0x20,0x82,0x10,0x3E,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0xF,0x0,0x20}, {0x0,0x3,0xE0,0x21,0x2,0x8,0x20,0x82,0x10,0x3E,0x2,0x10,0x21,0x2,0x8,0x20,0x80,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x10,0x0,0xF0,0x0,0x80,0x4,0x20,0x41,0x8,0xF,0x0,0x0}, {0x0,0x7,0xFC,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x2,0x8,0x20,0x82,0x8,0x11,0x1,0x10,0x11,0x0,0xA0,0xA,0x0,0x40,0x4,0x0,0x0}, {0x0,0x4,0x44,0x44,0x44,0x44,0x44,0x42,0xA8,0x2A,0x82,0xA8,0x11,0x1,0x10,0x11,0x0,0x0}, {0x0,0x2,0x8,0x20,0x81,0x10,0xA,0x0,0x40,0x4,0x0,0xA0,0x11,0x2,0x8,0x20,0x80,0x0}, {0x0,0x2,0x8,0x20,0x81,0x10,0x11,0x0,0xA0,0xA,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x3,0xF8,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, //Z {0x0,0x40,0x8,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x8}, //[ {0x0,0x2,0x8,0x20,0x81,0x10,0x11,0x3,0xF8,0x4,0x0,0x40,0x3F,0x80,0x40,0x4,0x0,0x0}, //\// {0x40,0x2,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x2,0x0}, //] {0x4,0x0,0xA0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //^ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF,0xFF}, //_ {0x8,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //' {0x0,0x0,0x0,0x0,0x0,0x0,0xF,0x0,0x8,0x7,0x81,0x88,0x10,0x81,0x18,0xE,0x80,0x0}, //a {0x0,0x1,0x0,0x10,0x1,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x90,0x16,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x88,0x10,0x1,0x0,0x10,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x8,0x0,0x80,0x8,0x6,0x80,0x98,0x10,0x81,0x8,0x10,0x80,0x98,0x6,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x90,0x10,0x81,0xF8,0x10,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x38,0x4,0x0,0x40,0x4,0x1,0xF8,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x80,0x98,0x10,0x81,0x8,0x9,0x80,0x68,0x0,0x80,0x10}, {0x0,0x1,0x0,0x10,0x1,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x80,0x0}, {0x0,0x0,0x40,0x4,0x0,0x0,0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x20,0x2,0x0,0x0,0x0,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x40}, {0x0,0x1,0x0,0x10,0x1,0x0,0x10,0x81,0x10,0x12,0x1,0x40,0x12,0x1,0x10,0x10,0x80,0x0}, {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x59,0x86,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x17,0x1,0x88,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xE,0x1,0x10,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x90,0x16,0x1,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x80,0x98,0x10,0x81,0x8,0x10,0x80,0x98,0x6,0x80,0x8}, {0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x1,0x90,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xF,0x1,0x8,0x10,0x0,0xF0,0x0,0x81,0x8,0xF,0x0,0x0}, {0x0,0x0,0x80,0x8,0x0,0x80,0x3F,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x81,0x18,0xE,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x82,0x8,0x11,0x1,0x10,0xA,0x0,0xA0,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x44,0x44,0x44,0x44,0x42,0xA8,0x2A,0x81,0x10,0x11,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x81,0x10,0xA,0x0,0x40,0xA,0x1,0x10,0x20,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x81,0x8,0x8,0x80,0x90,0x5,0x0,0x20,0x2,0x0,0x40}, {0x0,0x0,0x0,0x0,0x0,0x0,0x1F,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x1F,0x80,0x0}, //z {0x0,0xC0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x6,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10}, //{ {0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40}, //| {0x60,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0xC,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0}, //} {0xFF,0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //~ //特殊文字 {0x0,0x7,0xFC,0x4,0xF,0xFE,0x95,0x27,0xFC,0x44,0x47,0xFC,0x44,0x47,0xFC,0x4,0x20,0x7E}, //電 {0x0,0x7,0xFE,0x40,0x4,0x10,0x41,0x4,0x10,0x5F,0xE4,0x10,0x41,0x8,0x10,0x81,0x1,0xFE}, //圧 {0x1,0x0,0x10,0x9F,0xE4,0x24,0x4,0x48,0xFA,0x40,0x20,0x54,0x5,0x42,0x54,0x49,0x48,0x96}, //流 {0x20,0x2,0x0,0x3F,0xE4,0x20,0x82,0x3,0xFC,0x22,0x2,0x20,0xFF,0xE0,0x20,0x2,0x0,0x20}, //年 {0x0,0x3,0xFC,0x20,0x42,0x4,0x3F,0xC2,0x4,0x20,0x43,0xFC,0x20,0x42,0x4,0x40,0x44,0x1C}, //月 {0x0,0x3,0xFC,0x20,0x42,0x4,0x20,0x42,0x4,0x3F,0xC2,0x4,0x20,0x42,0x4,0x20,0x43,0xFC}, //日 {0x1,0x0,0x10,0xF7,0xE9,0x10,0x91,0x9,0xFE,0xF0,0x49,0xFE,0x90,0x49,0x44,0xF2,0x40,0xC}, //時 {0x0,0x2,0x78,0x20,0x82,0x4,0x40,0x44,0x2,0xBF,0xA8,0x88,0x8,0x81,0x8,0x10,0x86,0x30}, //分 {0x1,0x1,0x90,0xE1,0x2,0x54,0x29,0x2E,0x10,0x21,0x6,0x30,0x70,0x2A,0x4,0xA1,0x82,0xE0}, //秒 {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0x9,0x2,0x94,0x39,0xC0,0x0}, //Ω {0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x40,0x88,0x8,0x81,0x10,0x13,0x1,0xD0,0x20,0xC2,0x0}, //μ {0x0,0x0,0x0,0x0,0x0,0x0,0x31,0x84,0xA4,0x84,0x28,0x42,0x4A,0x43,0x18,0x0,0x0,0x0}, //∞ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x4,0x80,0x48,0x3,0x0}, //。 {0x3,0xC0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0}, //「 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80}, //」 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x2,0x0}, //、 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0x0,0x0,0x0}, //・ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x43,0xFC,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ヲ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xF8,0x0,0x80,0x48,0x5,0x0,0x40,0x8,0x1,0x0}, //ア {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x1,0x0,0x60,0x1A,0x0,0x20,0x2,0x0,0x20}, //イ {0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x40,0x3F,0x82,0x8,0x20,0x80,0x8,0x1,0x0,0xE0}, //ウ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xF8,0x4,0x0,0x40,0x4,0x0,0x40,0x3F,0x80,0x0}, //エ {0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x20,0x3F,0x80,0x20,0x6,0x0,0xA0,0x32,0x0,0x60}, //オ {0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x80,0xB,0x83,0xC8,0x9,0x0,0x50,0x4,0x0,0x40}, //ヤ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xE0,0x2,0x0,0x20,0x2,0x0,0x20,0x7F,0x80,0x0}, //ユ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xF8,0x0,0x80,0x8,0x1F,0x80,0x8,0x0,0x81,0xF8}, //ヨ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x48,0x24,0x82,0x48,0x1,0x0,0x10,0x6,0x1,0x80}, //ツ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x3F,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //ー {0x0,0x0,0x0,0x7F,0xE0,0x2,0x0,0x40,0x48,0x4,0x0,0x40,0x4,0x0,0x40,0x8,0x3,0x0}, //ア {0x0,0x0,0x0,0x0,0x40,0x8,0x1,0x0,0x60,0x1A,0x6,0x20,0x2,0x0,0x20,0x2,0x0,0x20}, //イ {0x0,0x0,0x40,0x4,0x7,0xFC,0x40,0x44,0x4,0x40,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ウ {0x0,0x0,0x0,0x0,0x7,0xFC,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0xFF,0xE0,0x0}, //エ {0x0,0x0,0x10,0x1,0x0,0x10,0x7F,0xE0,0x10,0x3,0x0,0x50,0x19,0x6,0x10,0x1,0x0,0x70}, //オ {0x0,0x0,0x40,0x4,0x0,0x40,0x7F,0xE0,0x42,0x4,0x20,0x42,0x8,0x20,0x82,0x10,0x26,0x1C}, //カ {0x0,0x0,0x80,0x8,0x0,0x80,0x7F,0xC0,0x40,0x4,0x0,0x40,0x7F,0xE0,0x20,0x2,0x0,0x20}, //キ {0x0,0x0,0x40,0x4,0x0,0x7C,0x8,0x41,0x4,0x20,0x40,0x8,0x0,0x80,0x10,0x6,0x3,0x80}, //ク {0x0,0x1,0x0,0x10,0x1,0x0,0x1F,0xE2,0x10,0x41,0x0,0x10,0x2,0x0,0x20,0xC,0x3,0x0}, //ケ {0x0,0x0,0x0,0x0,0x7,0xFC,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x7F,0xC0,0x4}, //コ {0x0,0x1,0x8,0x10,0x81,0x8,0x7F,0xE1,0x8,0x10,0x81,0x8,0x1,0x0,0x10,0x6,0x1,0x80}, //サ {0x0,0x0,0x0,0x30,0x0,0xC0,0x0,0x26,0x2,0x18,0x40,0x4,0x0,0x80,0x10,0x6,0x3,0x80}, //シ {0x0,0x0,0x0,0x3F,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x3,0x0,0x48,0x18,0x46,0x2}, //ス {0x0,0x1,0x0,0x10,0x1,0x0,0x11,0xC1,0xE4,0xF0,0x81,0x8,0x11,0x1,0x0,0x10,0x0,0xFC}, // {0x0,0x0,0x0,0x40,0x44,0x4,0x20,0x42,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, // {0x0,0x0,0x40,0x4,0x0,0x7C,0x8,0x41,0x44,0x22,0x40,0x18,0x0,0x80,0x10,0x6,0x3,0x80}, //タ {0x0,0x0,0x0,0x3,0xC7,0xC0,0x4,0x0,0x40,0xFF,0xE0,0x40,0x4,0x0,0x40,0x8,0x3,0x0}, //チ {0x0,0x0,0x0,0x48,0x44,0x84,0x24,0x42,0x44,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ツ {0x0,0x0,0x0,0x3F,0xC0,0x0,0x0,0x7,0xFE,0x2,0x0,0x20,0x2,0x0,0x20,0x4,0x1,0x80}, //テ {0x0,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0xC0,0x13,0x1,0xC,0x10,0x1,0x0,0x10,0x1,0x0}, //ト {0x0,0x0,0x20,0x2,0x0,0x20,0x7F,0xE0,0x20,0x2,0x0,0x20,0x4,0x0,0x40,0x8,0x3,0x0}, //ナ {0x0,0x0,0x0,0x0,0x3,0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0xE0,0x0}, //ニ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x40,0x88,0x4,0x80,0x30,0x1,0x0,0x28,0xC,0x47,0x0}, //ヌ {0x0,0x0,0x40,0x4,0x7,0xF8,0x0,0x80,0x10,0x2,0x0,0x60,0x1D,0x8E,0x46,0x4,0x0,0x40}, //ネ {0x0,0x0,0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80,0x10,0x1,0x0,0x20,0xC,0x3,0x0}, //ノ {0x0,0x0,0x0,0x10,0x1,0x8,0x10,0x81,0x4,0x20,0x42,0x4,0x20,0x24,0x2,0x40,0x24,0x2}, //ハ {0x0,0x2,0x0,0x20,0x2,0x0,0x21,0xC3,0xE0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x1,0xFC}, //ヒ {0x0,0x0,0x0,0x7F,0xC0,0x4,0x0,0x40,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x3,0x80}, //フ {0x0,0x0,0x0,0x0,0x0,0x0,0x1C,0x2,0x20,0x41,0x8,0x8,0x0,0x40,0x2,0x0,0x0,0x0}, //ヘ {0x0,0x0,0x40,0x4,0x0,0x40,0xFF,0xE0,0x40,0x4,0x2,0x48,0x44,0x48,0x42,0x4,0x0,0xC0}, //ホ {0x0,0x0,0x0,0x0,0x7,0xFE,0x0,0x20,0x4,0x0,0x81,0x10,0xA,0x0,0x40,0x2,0x0,0x10}, //マ {0x0,0x0,0x0,0x1C,0x0,0x38,0x0,0x0,0x0,0x1C,0x0,0x30,0x0,0x0,0x0,0x3C,0x0,0x38}, //ミ {0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x81,0x8,0x20,0x82,0x74,0xF8,0x40,0x4}, //ム {0x0,0x0,0x10,0x1,0x0,0x10,0x1,0x3,0x10,0xE,0x0,0x38,0x2,0x60,0x40,0x18,0x6,0x0}, //メ {0x0,0x0,0x0,0x7F,0x80,0x80,0x8,0x0,0x80,0xFF,0xE0,0x80,0x8,0x0,0x80,0x8,0x0,0x78}, //モ {0x0,0x1,0x0,0x10,0x1,0x1C,0x1E,0x4E,0x84,0x8,0x80,0x88,0x8,0x0,0x40,0x4,0x0,0x40}, //ヤ {0x0,0x0,0x0,0x0,0x3,0xF0,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0xFF,0xE0,0x0}, //ユ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x40,0x4,0x3F,0xC0,0x4,0x0,0x40,0x4,0x3F,0xC0,0x4}, //ヨ {0x0,0x0,0x0,0x3F,0x80,0x0,0x0,0x7,0xFC,0x0,0x40,0x4,0x0,0x80,0x10,0x6,0x1,0x80}, //ラ {0x0,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x80,0x8,0x1,0x0,0x10,0x2,0x0,0xC0}, //リ {0x0,0x0,0x20,0x12,0x1,0x20,0x12,0x1,0x20,0x12,0x21,0x22,0x22,0x42,0x24,0x42,0x84,0x30}, //ル {0x0,0x0,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x4,0x20,0x82,0x10,0x26,0x3,0x80}, //レ {0x0,0x0,0x0,0x0,0x7,0xFC,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x7F,0xC4,0x4}, //ロ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x40,0x44,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ワ {0x0,0x0,0x0,0x30,0x0,0xC0,0x0,0x20,0x2,0x0,0x40,0x4,0x0,0x80,0x10,0x6,0x3,0x80}, //ン {0x10,0x4,0x80,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //" {0x30,0x4,0x80,0x48,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //゜ /* 特殊文字 */ {0x30,0x4,0x80,0x48,0x3,0x38,0x4,0x40,0x80,0x8,0x0,0x80,0x8,0x0,0x44,0x3,0x80,0x0}, //℃ {0x4,0x0,0x40,0xA,0x0,0xA0,0xFB,0xE2,0x8,0x11,0x1,0x50,0x2A,0x83,0x18,0x40,0x40,0x0}, //☆ {0x4,0x0,0x40,0xE,0x0,0xE0,0xFF,0xE3,0xF8,0x1F,0x1,0xF0,0x3B,0x83,0x18,0x40,0x40,0x0}, //★ {0x0,0x0,0x60,0x19,0x82,0x4,0x20,0x44,0x2,0x40,0x22,0x4,0x20,0x41,0x98,0x6,0x0,0x0}, //○ {0x0,0x0,0x60,0x1F,0x83,0xFC,0x3F,0xC7,0xFE,0x7F,0xE3,0xFC,0x3F,0xC1,0xF8,0x6,0x0,0x0}, //● {0x0,0x0,0x60,0x19,0x82,0x4,0x26,0x44,0x92,0x49,0x22,0x64,0x20,0x41,0x98,0x6,0x0,0x0}, //◎ {0x0,0x0,0x40,0xA,0x1,0x10,0x20,0x84,0x4,0x80,0x24,0x4,0x20,0x81,0x10,0xA,0x0,0x40}, //◇ {0x0,0x0,0x40,0xE,0x1,0xF0,0x3F,0x87,0xFC,0xFF,0xE7,0xFC,0x3F,0x81,0xF0,0xE,0x0,0x40}, //◆ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x7F,0xC0,0x0}, //□ {0x0,0x0,0x0,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC0,0x0}, //■ {0x0,0x0,0x0,0x4,0x0,0xA0,0xA,0x1,0x10,0x11,0x2,0x8,0x20,0x84,0x4,0x7F,0xC0,0x0}, //△ {0x0,0x0,0x0,0x4,0x0,0xE0,0xE,0x1,0xF0,0x1F,0x3,0xF8,0x3F,0x87,0xFC,0x7F,0xC0,0x0}, //▲ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x20,0x82,0x8,0x11,0x1,0x10,0xA,0x0,0xA0,0x4,0x0,0x0}, //▽ {0x0,0x0,0x0,0x7F,0xC7,0xFC,0x3F,0x83,0xF8,0x1F,0x1,0xF0,0xE,0x0,0xE0,0x4,0x0,0x0}, //▼ {0x0,0x82,0x8,0x4F,0xE8,0x12,0xEF,0xE2,0x42,0x47,0xEF,0x8,0x27,0xEB,0x48,0xAF,0xE2,0x8}, //緯 {0x2,0x0,0x20,0x7F,0xE4,0x88,0x7F,0xE4,0x88,0x4F,0x84,0x0,0x9F,0xC8,0x88,0xF,0x7,0xE}, //度 {0x0,0x2,0x7E,0x40,0x29,0x24,0xF1,0x82,0x66,0x41,0xF,0x10,0x27,0xEB,0x10,0xA1,0x2,0xFE}, //経 {0x1,0x0,0x10,0x4F,0xE2,0x10,0xF,0xE0,0x92,0xEF,0xE2,0x30,0x25,0x42,0x92,0x50,0x8,0xFE}, //速 {0x4,0x0,0x40,0xFF,0xE1,0x10,0x1F,0x0,0x0,0xFF,0xE8,0x2,0x9F,0x29,0x12,0x9F,0x28,0x6}, //高 {0x4,0x0,0x40,0xFF,0xE8,0x42,0x3F,0x80,0x40,0x3F,0x80,0x40,0xFF,0xE0,0xA0,0x31,0x8C,0x6}, //実 {0x0,0x1,0xE2,0x92,0xA5,0xEA,0x12,0xA9,0xEA,0x52,0xA1,0x2A,0x5E,0xA4,0x2,0x92,0x2A,0x16}, //測 {0x0,0xF,0xFE,0x1,0x0,0x20,0x4,0x0,0xD0,0x34,0x8C,0x44,0x4,0x20,0x40,0x4,0x0,0x40}, //不 {0x4,0x2,0x4E,0x5F,0x8,0x50,0x1F,0xE2,0x92,0x4F,0x2C,0x22,0x5F,0xA5,0x22,0x7F,0xA4,0x26}, //衛 {0x0,0x3,0xF8,0x20,0x83,0xF8,0x20,0x83,0xF8,0x24,0x7,0xFC,0x84,0x3,0xF8,0x4,0xF,0xFE}, //星 {0x0,0x0,0xFC,0x88,0x44,0xFC,0x8,0x48,0xFC,0x40,0x0,0xFE,0xA,0xA2,0xAA,0x4A,0xA9,0xFE}, //温 {0x0,0x0,0xFC,0x88,0x44,0xFC,0x8,0x48,0xFC,0x40,0x0,0x50,0x55,0x24,0xD4,0x85,0x9,0xFE}, //湿 {0x0,0xF,0xFE,0x80,0x28,0x2,0x9F,0x29,0x12,0x91,0x29,0x12,0x9F,0x28,0x2,0x80,0x2F,0xFE}, //回 {0x0,0x2,0x3E,0xFC,0x2,0x0,0xFC,0xA,0x7E,0xFC,0x8A,0x48,0xFD,0x2,0x12,0xFE,0x22,0x3E}, //転 {0x0,0x7,0xFE,0x44,0x24,0x42,0x5F,0x24,0x42,0x5F,0xA4,0x2,0x5F,0x25,0x12,0x9F,0x28,0x6}, //周 {0x1,0x0,0x10,0x8F,0xE4,0x92,0x9,0x8,0xFC,0x48,0x40,0xA4,0x51,0x45,0x8,0x83,0x48,0xC2}, //波 {0x21,0xA,0x50,0x69,0xEF,0xE4,0x22,0x46,0x84,0xA5,0x4F,0x94,0x48,0x8C,0x88,0x31,0x4C,0xE2},//数 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0} };
<動作結果>
■ パラレルマスターポート(PMP)制御(8080 8ビットパラレル) + QVGA
PICにはパラレルマスターポート(Parallel Master Port、以下PMP)と呼ばれるモジュールが内蔵されているものがあります。PMPは汎用IOポートを
8ビットや16ビットの1つのレジスタとして扱うことができるモジュールでPIC周辺の 通信モジュール、LCD、外部メモリデバイス 及びマイコンなどと
パラレルで送受信する場合有効なモジュールです。 以下に、上記でおこなった汎用パラレルポートをつかった液晶制御を PMPで実施した場合の
例を紹介します。グラフィックライブラリは 後閑哲也さんの「LCD & タッチセンサ活用の素」(技術評論社)の中の 第6章「QVGA液晶表示器と
タッチスクリーンの使い方」にあるdsPIC用のグラフィックライブラリを PIC32用に変更したしたものです。
<試作品仕様>
・2.4インチQVGA液晶に PIC32MX795F512Lを使用して表示をおこなう
・液晶はaitendo YHY024006A(LCDコントローラ:ILI9325)を16ビットパラレルから8ビットパラレルに変更したものを使用すること。
(変更要領:「LCD & タッチセンサ活用の素」参照)
・インターフェースは PICの汎用ポートをつかった 8080 8ビットパラレルとする。
・パラレルマスターポート(PMP)モジュールを使用すること
・グラフィックライブラリは「LCD & タッチセンサ活用の素」にあるdsPIC用をPIC32用に変更してつかうこと。
<試作品回路図>(→回路図のPDFファイル)
PIC32MX795F512Lの場合の回路図を以下に示します。
<試作品外観>下記の写真には上記回路図にはない、また本テーマと関係のない部品が多々写っています
<プログラム例> //液晶表示 #include <proc/p32mx795f512l.h> //PIC32MX460F512L #include <plib.h> // PIC32 peripheral library //for SYSTEMConfigPerformance() #include "colorlcd_libdsPICVH.h" #include <math.h> #include <stdlib.h> //#include "1lcd_lib_C32.h" // コンフィギュレーション設定 // CPU=80MHz Peri=80MHz,HS+PLL,Divider=1/2,PLL=x20,WDT=Off #pragma config FNOSC=PRIPLL, POSCMOD=HS, FPLLIDIV=DIV_2 #pragma config FPLLMUL=MUL_20, FPBDIV=DIV_1, FPLLODIV=DIV_1 #pragma config FWDTEN=OFF, ICESEL=ICS_PGx2 char Buf[17]; //文字列のバッファー用レジスタ char str_Hellow[] = "Hellow"; char str_World[] = "World !!"; char str_Tokyo[] = "Tokyo"; char str_Japan[] = "Japan"; char str_Chiyodaku[] = "Chiyodaku"; char str_Sotokanda[] = "Sotokanda"; char str_Akihabara[] = "Akihabara"; char str_AKB48[] = "AKB48"; long int T0 = 1000; //int Clock = 80000000; //80MHz /* void delay_us(unsigned int usec) //1μsec遅延関数 { int count; count = (int)(Clock/20000000)*usec; do //実測: at Clock=80000000 { //delay_us(1000)→1003μsec、 delay_us(100)→102μsec、delay_us(10)→11μsec、delay_us(1)→1.6μsec asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); count--; }while(count != 0); } void delay_ms(unsigned int msec) //1msec遅延関数 { unsigned int i; for(i=0; i<msec; i++) // DelayUS(1000); delay_us(1000); } */ void DisplayFunc() { long i,j,index; //文字列描画 Glcd_Str(0,0,str_Hellow,BLACK,WHITE); Glcd_Str(1,1,str_World,RED,WHITE); Glcd_Str(2,2,str_Japan,BLUE,WHITE); Glcd_Str(3,3,str_Tokyo,WHITE,BLACK); Glcd_Str(4,4,str_Chiyodaku,RED,BLACK); Glcd_Str(5,5,str_Sotokanda,GREEN,BLACK); Glcd_Str(6,6,str_Akihabara,RED,YELLOW); Glcd_Str(7,7,str_AKB48,GREEN,YELLOW); delay_ms(T0); // 3秒待ち Glcd_Clear(BLACK); // クリア //ASCII文字の描画 Glcd_Clear(0); // クリア //文字間隔小 for(j=0; j<8; j++) // ASCII文字表示(前半96文字表示) { // 16文字/行 for(i=0; i<16; i++) { index = j*16+i+0x20; // 96文字で繰り返し Glcd_Char(j, i, index,WHITE,BLACK); //lcd_Char():文字間隔小 //文字表示制御 } } delay_ms(1000); // 3秒待ち Glcd_Clear(0); // クリア for(j=0; j<8; j++) // ASCII文字表示 { // 18文字/行 for(i=0; i<18; i++) { index = j*18+i+0x50; Glcd_Char(j, i, index,WHITE,BLACK); // lcd_Char1():文字間隔大 //文字表示制御 } } delay_ms(T0); // 3秒待ち Glcd_Clear(0); // クリア //画面全体描画 delay_ms(1000); Glcd_Clear(0); // 全消去(全部空白)) delay_ms(1000); Glcd_Clear(0xFF); // ベタ黒(全部黒) delay_ms(1000); Glcd_Clear(0); //斜め直線描画 Glcd_Clear(0); // 全クリア for(i=0; i<240; i++) // 斜め直線の表示 { Glcd_Pixel(i,i,1); // CS1側 Glcd_Pixel(240+i, i,1); // CS2側 } delay_ms(T0); // 3秒待ち Glcd_Clear(0); // 全クリア Glcd_Clear(0xFF); // 全部黒 for(i=0; i<240; i++) // 斜め直線白抜き表示 { Glcd_Pixel(i,i,0); // CS1側 Glcd_Pixel(240+i, i,0); // CS2側 } delay_ms(T0); // 3秒待ち Glcd_Clear(0); //この部分を追加するとメモリ不足となる // 直線描画テスト i = 0; for(j=0; j<120; j+=10) // ボックス表示 { Glcd_Line(j,j, 319-j, j,YELLOW); // 次第に小さなボックスへ Glcd_Line(j,j, j, 239 -j,YELLOW); Glcd_Line(319-j,239-j, 319-j,j,YELLOW); Glcd_Line(319-j,239-j, j,239-j,YELLOW); delay_ms(500); } delay_ms(T0); Glcd_Clear(0); //円の描画 for(i = 0; i < 10; i++) { Glcd_Circle(320/2 + 5*i,240/2,240/2,GREEN); } delay_ms(T0); Glcd_Clear(0); } int main(void) { int i; SYSTEMConfigPerformance(80000000); // システム最適化 DDPCONbits.JTAGEN = 0; //I/OポートとしてRA0、RA1、RA4、RA5をつかう場合、電源投入後DDPCONレジスタのbit3を0に、設定する必要があり;ます。 mJTAGPortEnable(DEBUG_JTAGPORT_OFF); // JTAGを無効化 TRISB = 0; //何故か TRISB = 0; を設定するとキャラタ液晶は動作しない //CGポートに影響? TRISC = 0; TRISD = 0; TRISE = 0; //Eポートを出力モードに設定 TRISG = 0; // 液晶表示器の初期化 Glcd_Init(); Glcd_Clear(BLACK); //キャラクタ液晶 // lcd_init(); // LCD初期化 // lcd_cmd(0b00001100); // カーソル:OFF ブリンク:OFF // lcd_clear(); // 全消去 // lcd_cmd(0x80); //1行目 // sprintf(Buf,"PIC32MX795F512L +");//C30とは異なり、arguement 不要 // lcd_str(Buf); //液晶表示 L // lcd_cmd(0xC0); //1行目 // sprintf(Buf,"5VGA_YHY024006A");//C30とは異なり、arguement 不要 // lcd_str(Buf); while(1) { DisplayFunc(); } } //----------------------------------------------------------------------- //colorlcd_libdsPICVH.h //このグラフィックライブラリは 後閑哲也さんが設計されたdsPIC用グラフィックライブラリを //PIC32MX 、 データバス:8ビットパラレル、 パラレルマスターポート(PMP)モジュール 用に //変更したものです。 /************************************************* * グラフィック液晶表示器用ライブラリ ヘッダ * ポートの定義 * 関数プロトタイプ **************************************************/ //#include "p33FJ64GP802.h" #include <proc/p32mx795f512l.h> //PIC32MX460F512L #define Fosc 20 //#define Fosc 80 /* LCD Ports define */ #define LCD_CS LATDbits.LATD10 #define LCD_RS LATGbits.LATG7 #define LCD_WR LATGbits.LATG8 #define LCD_RESET LATGbits.LATG9 //#define LCD_RD LATGbits.LATG10 //使っていない #define ENDCOL 320 // X #define ENDROW 240 // Y #define XChar (short)((ENDCOL) / 12) #define YLine (short)((ENDROW) / 14) #define Nop() asm("NOP") /******************************************* * 16bit Color Difinition *******************************************/ #define WHITE 0xFFFF #define BLACK 0x0000 #define RED 0xF800 #define GREEN 0x07E0 #define BLUE 0x001F #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define BROWN 0x8000 #define ORANGE 0xFC00 #define PERPLE 0x8010 #define COBALT 0x041F /*** 関数プロトタイプ ****/ void Glcd_out(unsigned short int index, unsigned short int data); void Glcd_Init(void); void Glcd_Clear(unsigned short Color); void Glcd_Pixel(short Xpos, short Ypos, unsigned short Color); void Glcd_Char(char colum, char line, unsigned char letter, unsigned short Color1, unsigned short Color2); void Glcd_Str(char colum, char line, char *s, unsigned short Color1, unsigned short Color2); void Glcd_Line(short x0, short y0, short x1, short y1, unsigned short Color); void Glcd_Circle(int x0, int y0, int r, unsigned short color); //void delay_us(unsigned short time); //void delay_ms(unsigned short time); //------------------------------------------------------------------------------------- //colorlcd_libdsPICVH.c //このグラフィックライブラリは 後閑哲也さんが設計されたdsPIC用グラフィックライブラリを //PIC32MX 、 データバス:8ビットパラレル、 パラレルマスターポート(PMP)モジュール 用に //変更したものです。 /******************************************************** * カラーグラフィックLCD(240x320ドット)用ライブラリ * 横表示で設定 * Glcd_Init(); // 初期化 * Glcd_Clear(); // 全画面消去 * Glcd_Pixel(); // 1ドット表示 * Glcd_Char(); // ANK文字表示 * Glcd_Str(); // ANK文字列表示 * Glcd_Line(); // 直線描画 * Glcd_Circle(); // 円描画 *********************************************************/ #include "colorlcd_libdsPICVH.h" #include "ASCII12dot.h" //ASCII 12x12dot /************************************ * レジスタ設定とデータ出力関数 *************************************/ void Glcd_out(unsigned short int index, unsigned short int data){ // Index上位バイト出力 LCD_CS = 0; // CS Low LCD_RS = 0; // Command PMDIN = ((index>>8) & 0x00FF) ; while(PMMODEbits.BUSY); // LCD_WR = 0; //★★PMWR(81pin) がWRへの信号を伝送 // WR out Nop(); // LCD_WR = 1; //★★PMWR(81pin) がWRへの信号を伝送 // Index下位バイト出力 PMDIN = (index & 0x00FF); while(PMMODEbits.BUSY); // LCD_WR = 0; //★★PMWR(81pin) がWRへの信号を伝送 // WR out Nop(); // LCD_WR = 1; //★★PMWR(81pin) がWRへの信号を伝送 // Data上位バイト出力 LCD_RS = 1; // Data PMDIN = (data>>8) & 0x00FF; while(PMMODEbits.BUSY); // LCD_WR = 0; //★★PMWR(81pin) がWRへの信号を伝送 // WR out Nop(); // LCD_WR = 1; //★★PMWR(81pin) がWRへの信号を伝送 // Index下位バイト出力 PMDIN = (data & 0x00FF); while(PMMODEbits.BUSY); // LCD_WR = 0; //★★PMWR(81pin) がWRへの信号を伝送 // WR out Nop(); // LCD_WR = 1; //★★PMWR(81pin) がWRへの信号を伝送 LCD_CS = 1; // CS High } /**************************** * LCD初期化関数 *****************************/ void Glcd_Init(void){ int i; PMMODE = 0; //PMMODEレジスタ リセット PMAEN = 0; //PMAENレジスタ リセット PMCON = 0; //PMCONレジスタ リセット PMMODEbits.MODE = 2; //Master mode2(マスタモード(リート・ライトピン独立)(PMCSx,PMRD/PMWR,PMENB,PMA<x,0>,PMD<7:0> and PMD<8:15> // Intel 80 master interface PMMODEbits.WAITB = 3; //10(2): DAta wait of 3* Tpb(12.5nsec) //( = 12.5 × 3 = 37.5nsec) //参考 SSD1926 18nsec //00: Data wait of 1× Tpb(12.5nsec) //データリード/ライト前に待機すべくセットアップ時間(CSパルス立下り前にRD,WR信号がセットアップ完了して待機すべく時間 ) PMMODEbits.WAITM = 15; //01: Wait of 2 × Tpb(12.5nsec)//データのリード/ライトに際し必要なパル幅(CSパルスの最少パルス幅) PMMODEbits.WAITE = 4; //データのリード/ライト後に 必要なホールド時間 PMMODEbits.MODE16 = 0; //8ビットパラレル伝送モード PMCONbits.PTRDEN = 1; //PMRD = 1 // enable RD line PMCONbits.PTWREN = 1; //PMWR = 1 // enable WR line PMCONbits.PMPEN = 1; //パラレルマスタモードON // enable PMP /* mPMPOpen( //パラレルマスタポート 初期化 //PMCONレジスタ//Parallel Master Control Register PMP_ON | //PMPオン////b15//★PMPEN と ON の2つがある //PMPモジュールON/OFF //PMP module On/Off //1:PMP_ON// PMPオン//★PMCONbits.PMPEN = 1;//★PMCONbits.ON = 1; //0:PMP_OFF//PMPオフ PMP_IDLE_CON | //アイドル中も連続動作////b13//アイドルでの動作モード//PMP idle mode On/Off// //1:PMP_IDLE_STOP//アイドル中は停止 //0:PMP_IDLE_CON//アイドル中も連続動作//continue module in idle mode//PMCONbits.SIDL = 0; PMP_MUX_DATA8_ALL | //全16ビットのアドレス・データはPMD<7:0>に多重化される////b12-11//アドレス多重化モード//PMP address multiplex mode//ADRMUX1,ADRMUX0//Address and Data Multiplexing Selection bits //11:PMP_MUX_DATA16_ALL//全16ビットのアドレス・データはPMD<15:0>に多重化される//All 16bits of Address are multiplexed on PMD<15:0> //10:PMP_MUX_DATA8_ALL//全16ビットのアドレス・データはPMD<7:0>に多重化される//All 16bits of Address are multiplexed on PMD<7:0> //01:PMP_MUX_DATA8_LOWER//下位8ビットアドレス・データはPMD<7:0>ピンに、上位8ビットはPMA<15:8>に多重化される//Lower 8bits of Address are multiplexed on PWM<7:0>pins,upper 8 bit are onPMA<15:8> //00:PMP_MUX_OFF//アドレスとデータは個々のピンに現れる//Address and Data appeare on separate pins. PMP_ST| //シュミットトリガ入力バッファの場合////b10//入力バッファータイプ選択//PMP Input Buffer Type Select //1:PMP_TTL//TTL入力バッファの場合 //0:PMP_ST//シュミットトリガ入力バッファの場合 PMP_WRITE_EN | //ライトのみ イネーブル////bit9-8://TPWREN、TPRDEN//PMP read and write strobe enable //11:PMP_READ_WRITE_EN//リード・ライト共 イネーブル //10:PMP_WRITE_EN//ライトのみ イネーブル //01:PMP_READ_EN//リードのみ イネーブル //00:PMP_READ_WRITE_OFF//リード・ライト共 ディセーブル PMP_CS2_EN | //PMCS2はチップセレクトとして、PMCS1はアドレスビット14として使用する場合////bit7-6//CSF1,CFS0//PMPチップセレクトビット機能選択//PMP chip select function //11: //10:PMP_CS2_CS1_EN//PMCS2とPMCS1をチップセレクトとして使用する場合 //01:PMP_CS2_EN//PMCS2はチップセレクトとして、PMCS1はアドレスビット14として使用する場合 //00:PMP_CS2_CS1_OFF//PMCS2、PMCS1をそれぞれアドレスビット15、アドレスビット14として使用する場合 PMP_LATCH_POL_HI | //アクティティブハイ////?bit5//ALP//アドレスラッチ極性//PMP address latch polarit //1:PMP_LATCH_POL_HI//アクティブハイ //0:PMP_LATCH_POL_LO//アクティブロウ PMP_CS2_POL_LO | //CS2アクティブロウ//bit4////チップセレクトCS2の極性 //1:PMP_CS2_POL_HI//アクティブハイ //0:PMP_CS2_POL_LO//アクティブロウ PMP_CS1_POL_LO | //CS1アクティブロウ//bit3//チップセレクトCS1の極性 //1:PMP_CS1_POL_HI//アクティブハイ //0:PMP_CS1_POL_LO//アクティブロウ PMP_WRITE_POL_LO | //Write Strobe アクティブハイ//bit1//Write Strobe Polarity bit //1:PMP_WRITE_POL_HI//アクティブハイ //0:PMP_WRITE_POL_LO//アクティブロウ PMP_READ_POL_LO, //Read Strobe アクティブハイ//bit0//Read Strobe Polarity bit //1:PMP_READ_POL_HI//アクティブハイ //0:PMP_READ_POL_LO//アクティブロウ //PMMODEレジスタ//Parallel Master Mode Register //bit15//BUSY//Busy bit(Master mode only)//読み出しビット //1: Port is busy //0: Port is not busy PMP_IRQ_OFF | //割り込み要求モード//bit14-13//PMP interrupt request mode //11: Reserved //10:PMP_IRQ_BUF_FULL//10 =Interrupt generated when Read Buffer 3 is reador Write Buffer 3 is written (Buffered PSP mode), //or on a read or write operation when PMA<1:0> = 11 (Addressable Slave mode only) //01:PMP_IRQ_READ_WRITE//Interrupt generated at the end of the read/write cycle //00: PMP_IRQ_OFF//No Interrupt generated PMP_AUTO_ADDR_OFF | //アドレスインクリメントモード //bit12-11//INCM<1:0>: Increment Mode bits //11:PMP_AUTO_ADDR_BUFFER//スレーブモード 自動インクリメント//Slave mode read and write buffers auto-increment (PMMODE<1:0> = 00 only) //10:PMP_AUTO_ADDR_DEC//アドレス自動デクリメント//Decrement ADDR<15:0> by 1 every read/write cycle(2,4) //01:PMP_AUTO_ADDR_INC//アドレス自動インクリメント//Increment ADDR<15:0> by 1 every read/write cycle(2,4) //00:PMP_AUTO_ADDR_OFF//アドレス自動インクリメント・デクリメントなしNo increment or decrement of address PMP_DATA_BUS_8 |//データ幅//bit10//MODE16// 8/16-bit Mode bit //1:PMP_DATA_BUS_16//16ビットモード:16-bit mode: a read or write to the data register invokes a single 16-bit transfer //0:PMP_DATA_BUS_8//8ビットモード:8-bit mode: a read or write to the data register invokes a single 8-bit transfer PMP_MODE_MASTER2 |//マスタモード(リート・ライトピン独立)//bit9-8//MODE<1:0>: Parallel Port Mode Select bits //11 PMP_MODE_MASTER_1 //マスターモード(リード・ライトピン共用)//Master mode 1 (PMCSx, PMRD/PMWR, PMENB, PMA<x:0>, PMD<7:0> and PMD<8:15>(3)) //10 PMP_MODE_MASTER_2 //マスタモード(リート・ライトピン独立)//Master mode 2 (PMCSx, PMRD, PMWR, PMA<x:0>, PMD<7:0> and PMD<8:15>(3)) //01 PMP_MODE_ESLAVE //拡張スレーブモード//Enhanced Slave mode, control signals (PMRD, PMWR, PMCS, PMD<7:0> and PMA<1:0>) //00 PMP_MODE_SLAVE //レガシー スレーブモード//Legacy Parallel Slave Port, control signals (PMRD, PMWR, PMCS and PMD<7:0>) //3:These pins are active when MODE16 = 1 (16-bit mode). PMP_WAIT_BEG_3 |//データセットアップ待ち時間//bit7-6//WAITB<1:0>: Data Setup to Read/Write Strobe Wait States bits(1)//PMP beginning phase wait cycles// //11:PMP_WAIT_BEG_4 //Data wait of 4 TPB; multiplexed address phase of 4 TPB //10:PMP_WAIT_BEG_3 //Data wait of 3 TPB; multiplexed address phase of 3 TPB //01:PMP_WAIT_BEG_2 //Data wait of 2 TPB; multiplexed address phase of 2 TPB //00:PMP_WAIT_BEG_1 //Data wait of 1 TPB; multiplexed address phase of 1 TPB (default) //TPB: ペリフェラルバスクロックの周期//Periodic Time of Peripheral Bus Clock //WAITM<3:0>?=?0000, the WAITB and WAITE bits are ignored and forced to 1 TPBCLK cycle for a write operation; WAITB?=?1 TPBCLK cycle, WAITE?=?0 TPBCLK cycles for a read operation. PMP_WAIT_MID_7 |//中央ウェート時間//bit5-2//PMP middle phase wait cyclesWAITM<3:0>: Data Read/Write Strobe Wait States bits //PMP middle phase wait cycles //1111: PMP_WAIT_MID_15//Wait of 15 TPB //1110: PMP_WAIT_MID_14//Wait of 14 TPB //1101: PMP_WAIT_MID_13// //1100: PMP_WAIT_MID_12// //1011: PMP_WAIT_MID_11// //1010: PMP_WAIT_MID_10// //1001: PMP_WAIT_MID_9// //1000: PMP_WAIT_MID_8// //0111: PMP_WAIT_MID_7// //0110: PMP_WAIT_MID_6// //0101: PMP_WAIT_MID_5// //0100: PMP_WAIT_MID_4// //0011: PMP_WAIT_MID_3// //0010: PMP_WAIT_MID_2//Wait of 3 TPB //0001: PMP_WAIT_MID_1//Wait of 2 TPB //0000: PMP_WAIT_MID_0//Wait of 1 TPB PMP_WAIT_END_3, //リード・ライト後のウェート時間//bit 1-0//WAITE<1:0>: Data Hold After Read/Write Strobe Wait States bits //PMP end phase wait cycles //11: PMP_WAIT_END_4 //Wait of 4 TPB //10: PMP_WAIT_END_3 //Wait of 3 TPB //01: PMP_WAIT_END_2 //Wait of 2 TPB //00: PMP_WAIT_END_1 //Wait of 1 TPB (default) //PMAENレジスタ //Parallel Port Pin Enable Register PMP_PEN_ALL, //PMPポートイネーブル・ディスイネーブル設定//PMP port pin configuration. //PMP port pin enable//PMP_PEN_ALL//PMP_PEN_15//PMP_PEN_14//PMP_PEN_13//PMP_PEN_12//PMP_PEN_11//PMP_PEN_10//PMP_PEN_9//PMP_PEN_8 //PMP_PEN_7//PMP_PEN_6//PMP_PEN_5//PMP_PEN_4//PMP_PEN_3//PMP_PEN_2//PMP_PEN_1//PMP_PEN_0//PMP_PEN_OFF //bit 31-16 //Unimplemented: Write ‘0’; ignore read //bit 15-14 //PTEN<15:14>: PMCSx Strobe Enable bits //1 =PMA15 and PMA14 function as either PMA<15:14> or PMCS2 and PMCS1(1) //0 =PMA15 and PMA14 function as port I/O //bit 13-2 //PTEN<13:2>: PMP Address Port Enable bits //1 =PMA<13:2> function as PMP address lines //0 =PMA<13:2> function as port I/O //bit 1-0 //PTEN<1:0>: PMALH/PMALL Strobe Enable bits //1 =PMA1 and PMA0 function as either PMA<1:0> or PMALH and PMALL(2) //0 =PMA1 and PMA0 pads function as port I/O PMP_INT_OFF | //割り込みON/OFF //PMP interrupt on/off //PMP_INT_ON //PMP_INT_OFF PMP_INT_PRI_4); //割り込み優先度 //PMP interrupt priorities //PMP_INT_PRI_7 //PMP_INT_PRI_6 //PMP_INT_PRI_5 //PMP_INT_PRI_4 //PMP_INT_PRI_3 //PMP_INT_PRI_2 //PMP_INT_PRI_1 //PMP_INT_PRI_0 */ delay_ms(20); // LCD_RD = 1; LCD_CS = 1; // CS High LCD_WR = 1; // WR High LCD_RESET = 0; // Reset LCD delay_ms(0x1); // 1msec wait LCD_RESET = 1; // Clear RESET delay_ms(25); // 25msec wait Glcd_out(0x00E3, 0x3008); // Set internal timing Glcd_out(0x00E7, 0x0012); // Set internal timing Glcd_out(0x00EF, 0x1231); // Set internal timing Glcd_out(0x0001, 0x0000); // set SS and SM bit Glcd_out(0x0002, 0x0700); // set line inversion Glcd_out(0x0003, 0x1018); // set GRAM write direction and BGR=1, 16bit color Glcd_out(0x0004, 0x0000); // Resize register Glcd_out(0x0008, 0x0207); // set the back porch and front porch Glcd_out(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0] Glcd_out(0x000A, 0x0000); // FMARK function Glcd_out(0x000C, 0x0000); // RGB interface setting Glcd_out(0x000D, 0x0000); // Frame marker Position Glcd_out(0x000F, 0x0000); // RGB interface polarity /********* 電源オンシーケンス **************/ Glcd_out(0x0010, 0x0000); // SAP, BT[3:0], AP[2:0], DSTB, SLP, STB Glcd_out(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] Glcd_out(0x0012, 0x0000); // VREG1OUT voltage Glcd_out(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude delay_ms(200); // コンデンサ放電待ち Glcd_out(0x0010, 0x1490); // SAP, BT[3:0], AP[2:0], DSTB, SLP, STB Glcd_out(0x0011, 0x0227); // R11h=0x0221 at VCI=3.3V ,DC1[2:0], DC0[2:0], VC[2:0] delay_ms(50); // 遅延 50ms Glcd_out(0x0012, 0x001c); // External reference voltage= Vci; delay_ms(50); // 遅延 50ms Glcd_out(0x0013, 0x0A00); // R13=0F00 when R12=009E;VDV[4:0] for VCOM amplitude Glcd_out(0x0029, 0x000F); // R29=0019 when R12=009E;VCM[5:0] for VCOMH//0012// Glcd_out(0x002B, 0x000D); // Frame Rate = 91Hz delay_ms(50); // 遅延 50ms Glcd_out(0x0020, 0x0000); // GRAM horizontal Address Glcd_out(0x0021, 0x0000); // GRAM Vertical Address /********** ガンマ補正 **********/ Glcd_out(0x0030, 0x0000); Glcd_out(0x0031, 0x0203); Glcd_out(0x0032, 0x0001); Glcd_out(0x0035, 0x0205); Glcd_out(0x0036, 0x030C); Glcd_out(0x0037, 0x0607); Glcd_out(0x0038, 0x0405); Glcd_out(0x0039, 0x0707); Glcd_out(0x003C, 0x0502); Glcd_out(0x003D, 0x1008); /*********** GRAM領域設定 *********/ Glcd_out(0x0050, 0x0000); // Horizontal GRAM Start Address Glcd_out(0x0051, 0x00EF); // Horizontal GRAM End Address Glcd_out(0x0052, 0x0000); // Vertical GRAM Start Address Glcd_out(0x0053, 0x013F); // Vertical GRAM Start Address Glcd_out(0x0060, 0xA700); // Gate Scan Line 横表示用 Glcd_out(0x0061, 0x0001); // NDL,VLE, REV Glcd_out(0x006A, 0x0000); // set scrolling line /************* 部分表示制御 ************/ Glcd_out(0x0080, 0x0000); // 部分表示1位置 Glcd_out(0x0081, 0x0000); // 部分表示1RAM開始アドレス Glcd_out(0x0082, 0x0000); // 部分表示1RAM終了アドレス Glcd_out(0x0083, 0x0000); // 部分表示2位置 Glcd_out(0x0084, 0x0000); // 部分表示2RAN開始アドレス Glcd_out(0x0085, 0x0000); // 部分表示2RAM終了アドレス /************** パネル制御 ************/ Glcd_out(0x0090, 0x0010); // 1ラインクロック数 Glcd_out(0x0092, 0x0600); // ゲートオーバーラップクロック数 Glcd_out(0x0093, 0x0003); // 出力タイミング Glcd_out(0x0095, 0x0110); // RGBの1ラインクロック数 Glcd_out(0x0097, 0x0000); // 出力タイミング Glcd_out(0x0098, 0x0000); // 出力タイミング /***** 表示制御 *****/ Glcd_out(0x0007, 0x0133); // 262K color and display ON } /*************************** * 画面消去関数 * 消去用色指定あり ****************************/ void Glcd_Clear(unsigned short Color){ int i, j; Glcd_out(0x0020, 0); // 原点にセット Glcd_out(0x0021, 0); for( j=0; j<ENDROW; j++){ // Y軸全部 for(i=0; i<ENDCOL; i++){ // X軸全部 Glcd_out(0x0022, Color); // 同色で埋める } } } /*********************************** * 1ピクセル表示関数 * 座標は(0,0)-(319,239) ***********************************/ void Glcd_Pixel(short Xpos, short Ypos, unsigned short Color){ if((Xpos<ENDCOL) && (Ypos<ENDROW)){ Glcd_out(0x0020, Ypos); // 座標指定 Glcd_out(0x0021, Xpos); Glcd_out(0x0022, Color); // ドット表示 } } /*************************** * 直線描画関数 ***************************/ #define abs(a) (((a)>0) ? (a) : -(a)) void Glcd_Line(short x0, short y0, short x1, short y1, unsigned short Color) { short steep, t; short deltax, deltay, error; short x, y; short ystep; y0=ENDROW-y0 -1; // Y座標反転 y1=ENDROW-y1 -1; /// 差分の大きいほうを求める steep = (abs(y1 - y0) > abs(x1 - x0)); /// x、yの入れ替え if(steep){ t = x0; x0 = y0; y0 = t; t = x1; x1 = y1; y1 = t; } if(x0 > x1) { t = x0; x0 = x1; x1 = t; t = y0; y0 = y1; y1 = t; } deltax = x1 - x0; // 傾き計算 deltay = abs(y1 - y0); error = 0; y = y0; /// 傾きでステップの正負を切り替え if(y0 < y1) ystep = 1; else ystep = -1; /// 直線を点で描画 for(x=x0; x<=x1; x++) { if(steep) Glcd_Pixel(y,x,Color); else Glcd_Pixel(x,y,Color); error += deltay; if((error << 1) >= deltax) { y += ystep; error -= deltax; } } } /************************************* * 円を描く関数 * 中心点と半径を指定 * (Fussyさんのアルゴリズムを使用) **************************************/ void Glcd_Circle(int x0, int y0, int r, unsigned short color) { int x = r; int y = 0; int F = -2 * r + 3; while(x >= y){ Glcd_Pixel(x0+x, y0+y, color); Glcd_Pixel(x0-x, y0+y, color); Glcd_Pixel(x0+x, y0-y, color); Glcd_Pixel(x0-x, y0-y, color); Glcd_Pixel(x0+y, y0+x, color); Glcd_Pixel(x0-y, y0+x, color); Glcd_Pixel(x0+y, y0-x, color); Glcd_Pixel(x0-y, y0-x, color); if(F >= 0){ x--; F -= 4 * x; } y++; F += 4 * y + 2; } } /***************************************** * ANK文字表示関数 12x12ドット * 320/12=26文字/行 240/14=17行 * (0, 0) - (25, 16)の範囲 ******************************************/ void Glcd_Char(char colum, char line, unsigned char letter, unsigned short Color1, unsigned short Color2){ unsigned char j, i, Mask; if((colum < XChar) && (line < YLine)){ // 範囲チェック // ANK表示出力 3バイトの2ラインずつを6回繰り返す for(j=0; j<6; j++){ // 8ドット連続部の表示 Mask = 0x80; for(i=0; i<8; i++){ // 1ライン目前半8ドット表示 if((ANKFont[letter][j*3] & Mask) != 0) Glcd_Pixel(colum*12+i+4, line*14+j*2+2, Color1); else Glcd_Pixel(colum*12+i+4, line*14+j*2+2, Color2); //背景色 // 2ライン目後半8ドット表示 if((ANKFont[letter][j*3+2] & Mask) != 0) Glcd_Pixel(colum*12+i+8, line*14+j*2+3, Color1); else Glcd_Pixel(colum*12+i+8, line*14+j*2+3, Color2); //背景色 Mask = Mask >> 1; } // 分割部4ドットずつ表示 Mask = 0x80; // 1ライン目後半4ドット表示 for(i=0; i<4; i++){ if((ANKFont[letter][j*3+1] & Mask) != 0) Glcd_Pixel(colum*12+i+12, line*14+j*2+2, Color1); else Glcd_Pixel(colum*12+i+12, line*14+j*2+2, Color2); //背景色 Mask = Mask >> 1; } // 2ライン目前半4ドット表示 for(i=4; i<8; i++){ if((ANKFont[letter][j*3+1] & Mask) != 0) Glcd_Pixel(colum*12+i, line*14+j*2+3, Color1); else Glcd_Pixel(colum*12+i, line*14+j*2+3, Color2); //背景色 Mask = Mask >> 1; } } } } /****************************** * 文字列描画関数 * 16文字x20行で指定 ******************************/ void Glcd_Str(char colum, char line, char *s, unsigned short Color1, unsigned short Color2) { while (*s){ Glcd_Char(colum++, line, *s++, Color1, Color2); if(colum >= XChar){ line++; colum = 0; if(line >= YLine) line = 0; } } } /********************************** * ループ遅延関数 usec単位 **********************************/ void delay_us(unsigned short usec){ unsigned short i, Max; Max = 2*usec * Fosc/5; for(i=0; i<Max; i++) { } } /********************************** * ループ遅延関数 msec単位 **********************************/ void delay_ms(unsigned short msec){ unsigned short i; for(i=0; i<msec; i++) delay_us(1000); } //------------------------------------------------------------ //ASCII12dot.h //このグラフィックライブラリは後閑哲也さんが設計されたものです。 /*************************************************** * ASCIIフォントデータ 12x12ドット * M+ Bitmap Fontsより変換して作成 * ASCII Code 0x20 to 0xFF ****************************************************/ const char ANKFont[256][18] = { {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //SP {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x0,0x0,0x0,0x4,0x0,0x0}, //! {0x0,0x1,0x20,0x24,0x4,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //" {0x0,0x0,0x90,0x9,0x0,0x90,0x3F,0xC0,0x90,0x9,0x3,0xFC,0x9,0x0,0x90,0x9,0x0,0x0}, //# {0x0,0x0,0x40,0x1F,0x2,0x48,0x24,0x1,0xF0,0x4,0x80,0x48,0x24,0x81,0xF0,0x4,0x0,0x0}, //$ {0x0,0x3,0x10,0x49,0x4,0xA0,0x4A,0x3,0x40,0x5,0x80,0xA4,0xA,0x41,0x24,0x11,0x80,0x0}, //% {0x0,0x0,0xE0,0x11,0x1,0x10,0x12,0x0,0xC8,0x12,0x82,0x10,0x21,0x2,0x28,0x1C,0x40,0x0}, //& {0x4,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //' {0x0,0x40,0x8,0x1,0x0,0x10,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x10,0x1,0x0,0x8}, //( {0x40,0x2,0x0,0x10,0x1,0x0,0x8,0x0,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x2,0x0}, //) {0x0,0x0,0x40,0x24,0x81,0x50,0xE,0x1,0x50,0x24,0x80,0x40,0x0,0x0,0x0,0x0,0x0,0x0}, //* {0x0,0x0,0x0,0x4,0x0,0x40,0x4,0x0,0x40,0x7F,0xC0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, //+ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x30,0x6,0x0}, //, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //- {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x30,0x0,0x0}, //. {0x0,0x0,0x2,0x0,0x40,0x8,0x1,0x0,0x20,0x4,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x0}, /// {0x0,0x0,0xE0,0x11,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, //0 {0x0,0x0,0x40,0xC,0x1,0x40,0x24,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x3F,0x80,0x0}, {0x0,0x3,0xF8,0x1,0x0,0x20,0x4,0x0,0xE0,0x1,0x0,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0x60,0xA,0x0,0xA0,0x12,0x1,0x20,0x22,0x2,0x20,0x7F,0x80,0x20,0x2,0x0,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x2E,0x3,0x10,0x0,0x80,0x8,0x0,0x82,0x10,0x1E,0x0,0x0}, {0x0,0x0,0xF0,0x10,0x2,0x0,0x2E,0x3,0x10,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x3,0xF8,0x0,0x80,0x10,0x1,0x0,0x20,0x2,0x0,0x40,0x4,0x0,0x80,0x8,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x11,0x0,0xE0,0x11,0x2,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0xE0,0x11,0x2,0x8,0x20,0x82,0x8,0x11,0x80,0xE8,0x0,0x80,0x10,0x1E,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0}, //: {0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0xC,0x0,0xC0,0x18,0x0,0x0}, //; {0x0,0x0,0x0,0x0,0xC0,0x30,0xC,0x3,0x0,0xC0,0x3,0x0,0xC,0x0,0x30,0x0,0xC0,0x0}, //< {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0xFC,0x0,0x0,0x0,0x7F,0xC0,0x0,0x0,0x0,0x0}, //= {0x0,0x0,0x0,0x60,0x1,0x80,0x6,0x0,0x18,0x0,0x60,0x18,0x6,0x1,0x80,0x60,0x0,0x0}, //> {0x0,0x0,0xE0,0x11,0x2,0x8,0x0,0x80,0x10,0x2,0x0,0x40,0x4,0x0,0x0,0x4,0x0,0x0}, //? {0x0,0x0,0xF0,0x30,0x82,0x64,0x49,0x44,0x94,0x49,0x44,0x94,0x27,0x83,0x0,0xE,0x0,0x0}, //@ {0x0,0x0,0x40,0x4,0x0,0xA0,0xA,0x1,0x10,0x11,0x3,0xF8,0x20,0x84,0x4,0x40,0x40,0x0}, //A {0x0,0x3,0xF0,0x20,0x82,0x8,0x20,0x83,0xF0,0x20,0x82,0x4,0x20,0x42,0x8,0x3F,0x0,0x0}, {0x0,0x0,0xF8,0x10,0x42,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x1,0x4,0xF,0x80,0x0}, {0x0,0x3,0xE0,0x21,0x82,0x8,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x82,0x18,0x3E,0x0,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x20,0x3,0xF0,0x20,0x2,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, {0x0,0x3,0xF8,0x20,0x2,0x0,0x20,0x3,0xF0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0}, {0x0,0x0,0xF8,0x10,0x42,0x0,0x20,0x2,0x3C,0x20,0x42,0x4,0x20,0x41,0xC,0xF,0x40,0x0}, {0x0,0x2,0x4,0x20,0x42,0x4,0x20,0x43,0xFC,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x40,0x0}, {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x41,0x4,0x10,0x41,0x2,0x20,0x1C,0x0,0x0}, {0x0,0x2,0x8,0x21,0x2,0x20,0x24,0x2,0x80,0x34,0x2,0x20,0x21,0x2,0x8,0x20,0x40,0x0}, {0x0,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, {0x0,0x4,0x4,0x60,0xC5,0x14,0x4A,0x44,0x44,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x40,0x0}, {0x0,0x2,0x8,0x30,0x82,0x88,0x24,0x82,0x28,0x21,0x82,0x8,0x20,0x82,0x8,0x20,0x80,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0xF,0x0,0x0}, {0x0,0x3,0xE0,0x21,0x2,0x8,0x20,0x82,0x10,0x3E,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0xF,0x0,0x20}, {0x0,0x3,0xE0,0x21,0x2,0x8,0x20,0x82,0x10,0x3E,0x2,0x10,0x21,0x2,0x8,0x20,0x80,0x0}, {0x0,0x0,0xF0,0x10,0x82,0x4,0x10,0x0,0xF0,0x0,0x80,0x4,0x20,0x41,0x8,0xF,0x0,0x0}, {0x0,0x7,0xFC,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x2,0x8,0x20,0x82,0x8,0x11,0x1,0x10,0x11,0x0,0xA0,0xA,0x0,0x40,0x4,0x0,0x0}, {0x0,0x4,0x44,0x44,0x44,0x44,0x44,0x42,0xA8,0x2A,0x82,0xA8,0x11,0x1,0x10,0x11,0x0,0x0}, {0x0,0x2,0x8,0x20,0x81,0x10,0xA,0x0,0x40,0x4,0x0,0xA0,0x11,0x2,0x8,0x20,0x80,0x0}, {0x0,0x2,0x8,0x20,0x81,0x10,0x11,0x0,0xA0,0xA,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x3,0xF8,0x0,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x20,0x2,0x0,0x3F,0x80,0x0}, //Z {0x0,0x40,0x8,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x8}, //[ {0x0,0x2,0x8,0x20,0x81,0x10,0x11,0x3,0xF8,0x4,0x0,0x40,0x3F,0x80,0x40,0x4,0x0,0x0}, //\// {0x40,0x2,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x2,0x0}, //] {0x4,0x0,0xA0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //^ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xF,0xFF}, //_ {0x8,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //' {0x0,0x0,0x0,0x0,0x0,0x0,0xF,0x0,0x8,0x7,0x81,0x88,0x10,0x81,0x18,0xE,0x80,0x0}, //a {0x0,0x1,0x0,0x10,0x1,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x90,0x16,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x88,0x10,0x1,0x0,0x10,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x8,0x0,0x80,0x8,0x6,0x80,0x98,0x10,0x81,0x8,0x10,0x80,0x98,0x6,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x90,0x10,0x81,0xF8,0x10,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x38,0x4,0x0,0x40,0x4,0x1,0xF8,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x80,0x98,0x10,0x81,0x8,0x9,0x80,0x68,0x0,0x80,0x10}, {0x0,0x1,0x0,0x10,0x1,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x80,0x0}, {0x0,0x0,0x40,0x4,0x0,0x0,0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x20,0x2,0x0,0x0,0x0,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x40}, {0x0,0x1,0x0,0x10,0x1,0x0,0x10,0x81,0x10,0x12,0x1,0x40,0x12,0x1,0x10,0x10,0x80,0x0}, {0x0,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x59,0x86,0x64,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x17,0x1,0x88,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xE,0x1,0x10,0x20,0x82,0x8,0x20,0x81,0x10,0xE,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x1,0x90,0x10,0x81,0x8,0x10,0x81,0x90,0x16,0x1,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x80,0x98,0x10,0x81,0x8,0x10,0x80,0x98,0x6,0x80,0x8}, {0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x1,0x90,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0xF,0x1,0x8,0x10,0x0,0xF0,0x0,0x81,0x8,0xF,0x0,0x0}, {0x0,0x0,0x80,0x8,0x0,0x80,0x3F,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x88,0x7,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x81,0x8,0x10,0x81,0x8,0x10,0x81,0x18,0xE,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x82,0x8,0x11,0x1,0x10,0xA,0x0,0xA0,0x4,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x44,0x44,0x44,0x44,0x42,0xA8,0x2A,0x81,0x10,0x11,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x81,0x10,0xA,0x0,0x40,0xA,0x1,0x10,0x20,0x80,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x81,0x8,0x8,0x80,0x90,0x5,0x0,0x20,0x2,0x0,0x40}, {0x0,0x0,0x0,0x0,0x0,0x0,0x1F,0x80,0x10,0x2,0x0,0x40,0x8,0x1,0x0,0x1F,0x80,0x0}, //z {0x0,0xC0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0x6,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10}, //{ {0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40}, //| {0x60,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0xC,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0}, //} {0xFF,0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //~ //特殊文字 {0x0,0x7,0xFC,0x4,0xF,0xFE,0x95,0x27,0xFC,0x44,0x47,0xFC,0x44,0x47,0xFC,0x4,0x20,0x7E}, //電 {0x0,0x7,0xFE,0x40,0x4,0x10,0x41,0x4,0x10,0x5F,0xE4,0x10,0x41,0x8,0x10,0x81,0x1,0xFE}, //圧 {0x1,0x0,0x10,0x9F,0xE4,0x24,0x4,0x48,0xFA,0x40,0x20,0x54,0x5,0x42,0x54,0x49,0x48,0x96}, //流 {0x20,0x2,0x0,0x3F,0xE4,0x20,0x82,0x3,0xFC,0x22,0x2,0x20,0xFF,0xE0,0x20,0x2,0x0,0x20}, //年 {0x0,0x3,0xFC,0x20,0x42,0x4,0x3F,0xC2,0x4,0x20,0x43,0xFC,0x20,0x42,0x4,0x40,0x44,0x1C}, //月 {0x0,0x3,0xFC,0x20,0x42,0x4,0x20,0x42,0x4,0x3F,0xC2,0x4,0x20,0x42,0x4,0x20,0x43,0xFC}, //日 {0x1,0x0,0x10,0xF7,0xE9,0x10,0x91,0x9,0xFE,0xF0,0x49,0xFE,0x90,0x49,0x44,0xF2,0x40,0xC}, //時 {0x0,0x2,0x78,0x20,0x82,0x4,0x40,0x44,0x2,0xBF,0xA8,0x88,0x8,0x81,0x8,0x10,0x86,0x30}, //分 {0x1,0x1,0x90,0xE1,0x2,0x54,0x29,0x2E,0x10,0x21,0x6,0x30,0x70,0x2A,0x4,0xA1,0x82,0xE0}, //秒 {0x0,0x0,0xF0,0x10,0x82,0x4,0x20,0x42,0x4,0x20,0x41,0x8,0x9,0x2,0x94,0x39,0xC0,0x0}, //Ω {0x0,0x0,0x0,0x0,0x0,0x4,0x8,0x40,0x88,0x8,0x81,0x10,0x13,0x1,0xD0,0x20,0xC2,0x0}, //μ {0x0,0x0,0x0,0x0,0x0,0x0,0x31,0x84,0xA4,0x84,0x28,0x42,0x4A,0x43,0x18,0x0,0x0,0x0}, //∞ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x4,0x80,0x48,0x3,0x0}, //。 {0x3,0xC0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0}, //「 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80}, //」 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x2,0x0}, //、 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xC,0x0,0xC0,0x0,0x0,0x0,0x0,0x0,0x0}, //・ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x43,0xFC,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ヲ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xF8,0x0,0x80,0x48,0x5,0x0,0x40,0x8,0x1,0x0}, //ア {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x1,0x0,0x60,0x1A,0x0,0x20,0x2,0x0,0x20}, //イ {0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x40,0x3F,0x82,0x8,0x20,0x80,0x8,0x1,0x0,0xE0}, //ウ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xF8,0x4,0x0,0x40,0x4,0x0,0x40,0x3F,0x80,0x0}, //エ {0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x20,0x3F,0x80,0x20,0x6,0x0,0xA0,0x32,0x0,0x60}, //オ {0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x80,0xB,0x83,0xC8,0x9,0x0,0x50,0x4,0x0,0x40}, //ヤ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xE0,0x2,0x0,0x20,0x2,0x0,0x20,0x7F,0x80,0x0}, //ユ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xF8,0x0,0x80,0x8,0x1F,0x80,0x8,0x0,0x81,0xF8}, //ヨ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x48,0x24,0x82,0x48,0x1,0x0,0x10,0x6,0x1,0x80}, //ツ {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x3F,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //ー {0x0,0x0,0x0,0x7F,0xE0,0x2,0x0,0x40,0x48,0x4,0x0,0x40,0x4,0x0,0x40,0x8,0x3,0x0}, //ア {0x0,0x0,0x0,0x0,0x40,0x8,0x1,0x0,0x60,0x1A,0x6,0x20,0x2,0x0,0x20,0x2,0x0,0x20}, //イ {0x0,0x0,0x40,0x4,0x7,0xFC,0x40,0x44,0x4,0x40,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ウ {0x0,0x0,0x0,0x0,0x7,0xFC,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0xFF,0xE0,0x0}, //エ {0x0,0x0,0x10,0x1,0x0,0x10,0x7F,0xE0,0x10,0x3,0x0,0x50,0x19,0x6,0x10,0x1,0x0,0x70}, //オ {0x0,0x0,0x40,0x4,0x0,0x40,0x7F,0xE0,0x42,0x4,0x20,0x42,0x8,0x20,0x82,0x10,0x26,0x1C}, //カ {0x0,0x0,0x80,0x8,0x0,0x80,0x7F,0xC0,0x40,0x4,0x0,0x40,0x7F,0xE0,0x20,0x2,0x0,0x20}, //キ {0x0,0x0,0x40,0x4,0x0,0x7C,0x8,0x41,0x4,0x20,0x40,0x8,0x0,0x80,0x10,0x6,0x3,0x80}, //ク {0x0,0x1,0x0,0x10,0x1,0x0,0x1F,0xE2,0x10,0x41,0x0,0x10,0x2,0x0,0x20,0xC,0x3,0x0}, //ケ {0x0,0x0,0x0,0x0,0x7,0xFC,0x0,0x40,0x4,0x0,0x40,0x4,0x0,0x40,0x4,0x7F,0xC0,0x4}, //コ {0x0,0x1,0x8,0x10,0x81,0x8,0x7F,0xE1,0x8,0x10,0x81,0x8,0x1,0x0,0x10,0x6,0x1,0x80}, //サ {0x0,0x0,0x0,0x30,0x0,0xC0,0x0,0x26,0x2,0x18,0x40,0x4,0x0,0x80,0x10,0x6,0x3,0x80}, //シ {0x0,0x0,0x0,0x3F,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x3,0x0,0x48,0x18,0x46,0x2}, //ス {0x0,0x1,0x0,0x10,0x1,0x0,0x11,0xC1,0xE4,0xF0,0x81,0x8,0x11,0x1,0x0,0x10,0x0,0xFC}, // {0x0,0x0,0x0,0x40,0x44,0x4,0x20,0x42,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, // {0x0,0x0,0x40,0x4,0x0,0x7C,0x8,0x41,0x44,0x22,0x40,0x18,0x0,0x80,0x10,0x6,0x3,0x80}, //タ {0x0,0x0,0x0,0x3,0xC7,0xC0,0x4,0x0,0x40,0xFF,0xE0,0x40,0x4,0x0,0x40,0x8,0x3,0x0}, //チ {0x0,0x0,0x0,0x48,0x44,0x84,0x24,0x42,0x44,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ツ {0x0,0x0,0x0,0x3F,0xC0,0x0,0x0,0x7,0xFE,0x2,0x0,0x20,0x2,0x0,0x20,0x4,0x1,0x80}, //テ {0x0,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0xC0,0x13,0x1,0xC,0x10,0x1,0x0,0x10,0x1,0x0}, //ト {0x0,0x0,0x20,0x2,0x0,0x20,0x7F,0xE0,0x20,0x2,0x0,0x20,0x4,0x0,0x40,0x8,0x3,0x0}, //ナ {0x0,0x0,0x0,0x0,0x3,0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7F,0xE0,0x0}, //ニ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x40,0x88,0x4,0x80,0x30,0x1,0x0,0x28,0xC,0x47,0x0}, //ヌ {0x0,0x0,0x40,0x4,0x7,0xF8,0x0,0x80,0x10,0x2,0x0,0x60,0x1D,0x8E,0x46,0x4,0x0,0x40}, //ネ {0x0,0x0,0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x0,0x80,0x10,0x1,0x0,0x20,0xC,0x3,0x0}, //ノ {0x0,0x0,0x0,0x10,0x1,0x8,0x10,0x81,0x4,0x20,0x42,0x4,0x20,0x24,0x2,0x40,0x24,0x2}, //ハ {0x0,0x2,0x0,0x20,0x2,0x0,0x21,0xC3,0xE0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x1,0xFC}, //ヒ {0x0,0x0,0x0,0x7F,0xC0,0x4,0x0,0x40,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x3,0x80}, //フ {0x0,0x0,0x0,0x0,0x0,0x0,0x1C,0x2,0x20,0x41,0x8,0x8,0x0,0x40,0x2,0x0,0x0,0x0}, //ヘ {0x0,0x0,0x40,0x4,0x0,0x40,0xFF,0xE0,0x40,0x4,0x2,0x48,0x44,0x48,0x42,0x4,0x0,0xC0}, //ホ {0x0,0x0,0x0,0x0,0x7,0xFE,0x0,0x20,0x4,0x0,0x81,0x10,0xA,0x0,0x40,0x2,0x0,0x10}, //マ {0x0,0x0,0x0,0x1C,0x0,0x38,0x0,0x0,0x0,0x1C,0x0,0x30,0x0,0x0,0x0,0x3C,0x0,0x38}, //ミ {0x0,0x0,0x80,0x8,0x0,0x80,0x8,0x1,0x0,0x10,0x81,0x8,0x20,0x82,0x74,0xF8,0x40,0x4}, //ム {0x0,0x0,0x10,0x1,0x0,0x10,0x1,0x3,0x10,0xE,0x0,0x38,0x2,0x60,0x40,0x18,0x6,0x0}, //メ {0x0,0x0,0x0,0x7F,0x80,0x80,0x8,0x0,0x80,0xFF,0xE0,0x80,0x8,0x0,0x80,0x8,0x0,0x78}, //モ {0x0,0x1,0x0,0x10,0x1,0x1C,0x1E,0x4E,0x84,0x8,0x80,0x88,0x8,0x0,0x40,0x4,0x0,0x40}, //ヤ {0x0,0x0,0x0,0x0,0x3,0xF0,0x1,0x0,0x10,0x1,0x0,0x10,0x1,0x0,0x10,0xFF,0xE0,0x0}, //ユ {0x0,0x0,0x0,0x3F,0xC0,0x4,0x0,0x40,0x4,0x3F,0xC0,0x4,0x0,0x40,0x4,0x3F,0xC0,0x4}, //ヨ {0x0,0x0,0x0,0x3F,0x80,0x0,0x0,0x7,0xFC,0x0,0x40,0x4,0x0,0x80,0x10,0x6,0x1,0x80}, //ラ {0x0,0x2,0x8,0x20,0x82,0x8,0x20,0x82,0x8,0x20,0x80,0x8,0x1,0x0,0x10,0x2,0x0,0xC0}, //リ {0x0,0x0,0x20,0x12,0x1,0x20,0x12,0x1,0x20,0x12,0x21,0x22,0x22,0x42,0x24,0x42,0x84,0x30}, //ル {0x0,0x0,0x0,0x20,0x2,0x0,0x20,0x2,0x0,0x20,0x2,0x4,0x20,0x82,0x10,0x26,0x3,0x80}, //レ {0x0,0x0,0x0,0x0,0x7,0xFC,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x7F,0xC4,0x4}, //ロ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x40,0x44,0x4,0x0,0x40,0x8,0x0,0x80,0x10,0x6,0x1,0x80}, //ワ {0x0,0x0,0x0,0x30,0x0,0xC0,0x0,0x20,0x2,0x0,0x40,0x4,0x0,0x80,0x10,0x6,0x3,0x80}, //ン {0x10,0x4,0x80,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //" {0x30,0x4,0x80,0x48,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}, //゜ /* 特殊文字 */ {0x30,0x4,0x80,0x48,0x3,0x38,0x4,0x40,0x80,0x8,0x0,0x80,0x8,0x0,0x44,0x3,0x80,0x0}, //℃ {0x4,0x0,0x40,0xA,0x0,0xA0,0xFB,0xE2,0x8,0x11,0x1,0x50,0x2A,0x83,0x18,0x40,0x40,0x0}, //☆ {0x4,0x0,0x40,0xE,0x0,0xE0,0xFF,0xE3,0xF8,0x1F,0x1,0xF0,0x3B,0x83,0x18,0x40,0x40,0x0}, //★ {0x0,0x0,0x60,0x19,0x82,0x4,0x20,0x44,0x2,0x40,0x22,0x4,0x20,0x41,0x98,0x6,0x0,0x0}, //○ {0x0,0x0,0x60,0x1F,0x83,0xFC,0x3F,0xC7,0xFE,0x7F,0xE3,0xFC,0x3F,0xC1,0xF8,0x6,0x0,0x0}, //● {0x0,0x0,0x60,0x19,0x82,0x4,0x26,0x44,0x92,0x49,0x22,0x64,0x20,0x41,0x98,0x6,0x0,0x0}, //◎ {0x0,0x0,0x40,0xA,0x1,0x10,0x20,0x84,0x4,0x80,0x24,0x4,0x20,0x81,0x10,0xA,0x0,0x40}, //◇ {0x0,0x0,0x40,0xE,0x1,0xF0,0x3F,0x87,0xFC,0xFF,0xE7,0xFC,0x3F,0x81,0xF0,0xE,0x0,0x40}, //◆ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x40,0x44,0x4,0x7F,0xC0,0x0}, //□ {0x0,0x0,0x0,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC7,0xFC,0x7F,0xC0,0x0}, //■ {0x0,0x0,0x0,0x4,0x0,0xA0,0xA,0x1,0x10,0x11,0x2,0x8,0x20,0x84,0x4,0x7F,0xC0,0x0}, //△ {0x0,0x0,0x0,0x4,0x0,0xE0,0xE,0x1,0xF0,0x1F,0x3,0xF8,0x3F,0x87,0xFC,0x7F,0xC0,0x0}, //▲ {0x0,0x0,0x0,0x7F,0xC4,0x4,0x20,0x82,0x8,0x11,0x1,0x10,0xA,0x0,0xA0,0x4,0x0,0x0}, //▽ {0x0,0x0,0x0,0x7F,0xC7,0xFC,0x3F,0x83,0xF8,0x1F,0x1,0xF0,0xE,0x0,0xE0,0x4,0x0,0x0}, //▼ {0x0,0x82,0x8,0x4F,0xE8,0x12,0xEF,0xE2,0x42,0x47,0xEF,0x8,0x27,0xEB,0x48,0xAF,0xE2,0x8}, //緯 {0x2,0x0,0x20,0x7F,0xE4,0x88,0x7F,0xE4,0x88,0x4F,0x84,0x0,0x9F,0xC8,0x88,0xF,0x7,0xE}, //度 {0x0,0x2,0x7E,0x40,0x29,0x24,0xF1,0x82,0x66,0x41,0xF,0x10,0x27,0xEB,0x10,0xA1,0x2,0xFE}, //経 {0x1,0x0,0x10,0x4F,0xE2,0x10,0xF,0xE0,0x92,0xEF,0xE2,0x30,0x25,0x42,0x92,0x50,0x8,0xFE}, //速 {0x4,0x0,0x40,0xFF,0xE1,0x10,0x1F,0x0,0x0,0xFF,0xE8,0x2,0x9F,0x29,0x12,0x9F,0x28,0x6}, //高 {0x4,0x0,0x40,0xFF,0xE8,0x42,0x3F,0x80,0x40,0x3F,0x80,0x40,0xFF,0xE0,0xA0,0x31,0x8C,0x6}, //実 {0x0,0x1,0xE2,0x92,0xA5,0xEA,0x12,0xA9,0xEA,0x52,0xA1,0x2A,0x5E,0xA4,0x2,0x92,0x2A,0x16}, //測 {0x0,0xF,0xFE,0x1,0x0,0x20,0x4,0x0,0xD0,0x34,0x8C,0x44,0x4,0x20,0x40,0x4,0x0,0x40}, //不 {0x4,0x2,0x4E,0x5F,0x8,0x50,0x1F,0xE2,0x92,0x4F,0x2C,0x22,0x5F,0xA5,0x22,0x7F,0xA4,0x26}, //衛 {0x0,0x3,0xF8,0x20,0x83,0xF8,0x20,0x83,0xF8,0x24,0x7,0xFC,0x84,0x3,0xF8,0x4,0xF,0xFE}, //星 {0x0,0x0,0xFC,0x88,0x44,0xFC,0x8,0x48,0xFC,0x40,0x0,0xFE,0xA,0xA2,0xAA,0x4A,0xA9,0xFE}, //温 {0x0,0x0,0xFC,0x88,0x44,0xFC,0x8,0x48,0xFC,0x40,0x0,0x50,0x55,0x24,0xD4,0x85,0x9,0xFE}, //湿 {0x0,0xF,0xFE,0x80,0x28,0x2,0x9F,0x29,0x12,0x91,0x29,0x12,0x9F,0x28,0x2,0x80,0x2F,0xFE}, //回 {0x0,0x2,0x3E,0xFC,0x2,0x0,0xFC,0xA,0x7E,0xFC,0x8A,0x48,0xFD,0x2,0x12,0xFE,0x22,0x3E}, //転 {0x0,0x7,0xFE,0x44,0x24,0x42,0x5F,0x24,0x42,0x5F,0xA4,0x2,0x5F,0x25,0x12,0x9F,0x28,0x6}, //周 {0x1,0x0,0x10,0x8F,0xE4,0x92,0x9,0x8,0xFC,0x48,0x40,0xA4,0x51,0x45,0x8,0x83,0x48,0xC2}, //波 {0x21,0xA,0x50,0x69,0xEF,0xE4,0x22,0x46,0x84,0xA5,0x4F,0x94,0x48,0x8C,0x88,0x31,0x4C,0xE2},//数 {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0} };
<動作結果>